package mainimport ( "fmt" "math/rand" "runtime" "time")func main() { runtime.GC() start := time.Now().UnixNano() / 1e6 //毫秒数 sum := 0 kk := GenerateRandnum(3) max := 100000000 + kk for i := 0; i < max; i++ { sum = sum + kk } fmt.Println(time.Now().UnixNano()/1e6 - start) //毫秒数 fmt.Println(sum) fmt.Println(max)}func GenerateRandnum(k int) int { rand.Seed(time.Now().Unix()) randNum := rand.Intn(k) return randNum}//结果只要30-40毫秒,多次测试差别不大
再对比下delphi运行速度,delphi号称有接近于c++的速度。
procedure TForm1.Button1Click(Sender: TObject);var i,t,sum,kk,max1:Int64;begin t:=GetTickCount; Randomize; kk:=Random(3); sum:=0; for I := 0 to 100000000+kk do begin sum:=sum+kk; end; t:=GetTickCount-t; ShowMessagefmt('%d,%d',[t,sum]);end;//
以上两个测试,使用了动态种子生成的随机数,随机次数多加了几次,每次加的也不是固定1避免了编译器优化。本机普通电脑win7 x64电脑测试了很多次差别不大。
golang的速度在30-40毫秒之间
delphi的速度在280-290之间。
多轮测试差别不大。
这样的对比速度简直让人惊喜,delphi作为静态编译语言,优化已经做得很好了,golang竟然有这样快了么?