golang map性能测试

webyh · · 3827 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

golang map是golang的方便操作的key-value

package main

import (
	"fmt"
	"math/rand"
	"time"
	_"strconv"
)

var x = make(map[int]int, 100000001)
//var x = make(map[string]string, 100000001)

func main() {

	ttime := time.Now().UnixNano()

	//x := make(map[int]int, 100000001)
	//x := [100000001]int{}

	fmt.Printf("len x %d \n", len(x))

	for i := 1; i < 100000001; i++ {
		x[rand.Intn(i)] = rand.Intn(i)
		//x[strconv.Itoa(rand.Intn(i))] = "aaaaaaaaaa"
	}
	fmt.Printf("len1 x %d \n", len(x))

	ttime1 := time.Now().UnixNano()

	fmt.Printf("time cal %f\n", float64(ttime1-ttime)/float64(1*time.Second))

}
// go version :go1.4  操作系统:win7 内存:8G 核数:4

总结:

 1、测试结果 make(map[int]int, 100000001-1亿)  大概需要2s,相当于申请100MB空间(估算)

 2、1亿次随机写入map[int]int,花费25s时间,大概随机写入5000w个key,平均1s写入400w map[int]int

1亿次随机写入map[string]string,花费38s时间,大概随机写入5000w个key,平均1s写入260w map[string]string



欢迎关注我们的微信公众号,每天学习Go知识

本文来自:开源中国博客

感谢作者:webyh

查看原文:golang map性能测试

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:731990104

3827 次点击  
加入收藏 微博
1 回复  |  直到 2000-01-01 00:00:00
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传