package main
import (
"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竟然有这样快了么?