返回顶部

收藏

goroutine(go协程)性能测试

更多

测试循环10亿次需要花多少时间,我的电脑是win7 32位系统+i3 2330m的处理器+4G内存。

直接用for循环是0.46秒,用两个协程只用了0.23秒。我这只是简单的for循环,

如果用其他的计算效果估计会更明显。多核cpu会有明显的性能提升,协程个

数我觉得设置成cpu的核心数就行了。

直接在这个文件目录下运行go test -v就可以运行了。

package goroutine

import(
    "testing"
    "runtime"
)

const(
    LOOP_COUNT=1000000000
)

//两个协程循环10亿次
func TestMulti(t *testing.T){
    //协程的个数
    n:=2
    //每个协程要循环的次数
    lc:=LOOP_COUNT/n
    runtime.GOMAXPROCS(runtime.NumCPU())
    chs:=make([]chan int,n)
    for i:=0;i<n;i++{
        chs[i]=make(chan int)
        c:=chs[i]
        go func(){
            for j:=0;j<lc;j++{

            }
            c<-1
        }()
    }
    for _,c:=range(chs){
        <-c
    }
}

//单协程循环10亿次
func TestSingle(t *testing.T){
    for i:=0;i<LOOP_COUNT;i++{

    }
}
//该片段来自于http://outofmemory.cn

标签:golang,基础

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. 博主 发表 2014-01-24 08:28:00 Go语言基础
  2. 无闻 发表 2014-01-16 07:00:00 《Go编程基础》视频教程
  3. 无闻 发表 2014-01-29 17:53:00 《Go Web基础》视频教程
  4. jack.zh 发表 2015-05-21 20:12:00 Go并发编程基础(译)
  5. 无闻 发表 2014-01-16 07:00:00 《Go编程基础》视频教程
  6. 无闻 发表 2014-01-29 17:53:00 《Go Web基础》视频教程
  7. OurMySQL 发表 2013-01-08 13:04:28 ubuntu server下使用Google Performance Tools优化MySQL性能
  8. musiXboy 发表 2013-03-14 22:02:21 Digg 宣布要打造 Google Reader 替代品
  9. musiXboy 发表 2013-03-17 14:53:34 Google 街景发展历史回顾
  10. wantfee 发表 2013-01-02 02:01:41 33个以圆形为基础的logo设计欣赏
  11. polaris 发表 2013-01-18 02:44:20 Go加密解密之RSA
  12. 博主 发表 2011-11-20 11:03:10 标签云在MongoDB和go中的实现

发表评论