首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原子读写性能简单测试

原子读写性能简单测试

作者头像
李海彬
发布2018-03-22 16:27:38
1.4K0
发布2018-03-22 16:27:38
举报
文章被收录于专栏:Golang语言社区Golang语言社区

代码如下:

package main

import (
    "fmt"
    "sync/atomic"
    "time"
)

func bench1(nums []uint32) time.Duration {
    t := time.Now()
    for i := 0; i < len(nums); i++ {
        atomic.AddUint32(&nums[i], 1)
    }
    return time.Now().Sub(t)
}

func bench2(nums []uint32) time.Duration {
    t := time.Now()
    for i := 0; i < len(nums); i++ {
        nums[i] += 1
    }
    return time.Now().Sub(t)
}

func main(){
    nums := make([]uint32, 10000000)
    for i := 0; i < 5; i++ {
        fmt.Printf("%v\t%v\n", bench1(nums), bench2(nums))
    }
}
输出结果:

atomic

memory

74.395ms

5.597ms

67.055ms

6.214ms

68.2ms

5.954ms

68.147ms

5.624ms

67.652ms

5.672ms

测试环境:
OS: ubuntu 12.04
CPU: i7-3770
MEMORY: 32G 
GO VERSION: 1.0.3
结论:
原子读写的执行时间大约是直接内存读写的10倍左右。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档