七叶笔记 » golang编程 » 对比看下golang强大的运算速度

对比看下golang强大的运算速度

 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竟然有这样快了么?

相关文章