golang map性能测试

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

时间: 2025-01-03 07:40:08

golang map性能测试的相关文章

golang map

Our friend Monk has been made teacher for the day today by his school professors . He is going to teach informatics to his colleagues as that is his favorite subject . Before entering the class, Monk realized that he does not remember the names of al

golang 单元测试&amp;&amp;性能测试

一:单元测试 1.为什么要做单元测试和性能测试 减少bug 快速定位bug 减少调试时间 提高代码质量 2.golang的单元测试 单元测试代码的go文件必须以_test.go结尾 单元测试的函数名必须以Test开头,是可导出公开的函数 测试函数的签名必须接收一个指向testing.T类型的指针,并且不能返回任何值 3.golang单元测试组 有好几个不同的输入以及输出组成的一组单元测试 4.测试覆盖率 go test -cover 直接输出覆盖率 go test -run TestAll 指定

golang map to struct

map映射到结构体,这里只支持简单的数据类型,复杂的需要在拓展 package main import ( "errors" "fmt" "reflect" "strconv" "time" ) type User struct { Name string Age int8 Date time.Time } func main() { data := make(map[string]interface{})

golang map并发读写异常导致服务崩溃

昨天突然接到报警说服务端口丢失,也就是服务崩溃了. 1, 先看错误日志,发现是调用json.Marshal时出错了,错误原因是:concurrent map iteration and map write,即并发读写map. fatal error: concurrent map iteration and map write goroutine 543965 [running]: runtime.throw(0xb74baf, 0x26) /usr/local/go1.10.1/src/run

golang SQLite3性能测试

SQLite是个小型的数据库,很简洁,即支持文件也支持内存,比较适合小型的独立项目,在没有网络的时候做一些复杂的关系数据存储和运算. 为了考察性能做10M(1000万)条记录的测试,测试机4CPU.8G内存,操作系统:Ubuntu 16 测试结果: 10M条写入时间:92秒 平均每条检索时间:0.0172毫秒 最大内存占用1.7G 使用的Driver github.com/mattn/go-sqlite3 下面是测试的代码 //SQLite in memory,小心,不能只写:memory:,这

Golang适合高并发场景的原因分析

典型的两个现实案例: 我们先看两个用Go做消息推送的案例实际处理能力. 360消息推送的数据: 16台机器,标配:24个硬件线程,64GB内存 Linux Kernel 2.6.32 x86_64 单机80万并发连接,load 0.2~0.4,CPU 总使用率 7%~10%,内存占用20GB (res) 目前接入的产品约1280万在线用户 2分钟一次GC,停顿2秒 (1.0.3 的 GC 不给力,直接升级到 tip,再次吃螃蟹) 15亿个心跳包/天,占大多数. 京东云消息推送系统 (团队人数:4

深度解密Go语言之 map

目录 什么是 map 为什么要用 map map 的底层如何实现 map 内存模型 创建 map 哈希函数 key 定位过程 map 的两种 get 操作 如何进行扩容 map 的遍历 map 的赋值 map 的删除 map 进阶 可以边遍历边删除吗 key 可以是 float 型吗? 总结 参考资料 这篇文章主要讲 map 的赋值.删除.查询.扩容的具体执行过程,仍然是从底层的角度展开.结合源码,看完本文一定会彻底明白 map 底层原理. 我要说明的是,这里对 map 的基本用法涉及比较少,我

Google资深工程师深度讲解Go语言☆

准备工作 ######课程导读: Go语言的历史起源??? 为什么会有Go出现?? Go的发展趋势?? 怎么样学习Go?? ######安装与环境: 视频地址:安装与环境 ######Go的参考资料汇总:1.GO语言零基础入门资料整理2.Restful接口开发(PHP)3.Go入门指南4.Learngobyexample 巩固语法基础的Demo,初学者“抄”(学习)代码的地方5.Go 初学者成长之路6.Go 标准库中文文档7.<编程之法:面试和算法心得>8.目录: 第1章 课程介绍    欢迎

Golang,用map写个单词统计器

Golang中也有实用的泛型编程模板.如map.据Go官方团队称,其实现为Hash表,而非类似cpp或Java的红黑树.所以理论上速度更能快上几个等级(Hash与红黑树的效率对比可以看我的文章C++中各种<string,T>关联方式的速度对比,效率比约为3:1),但有一些区别,就是遍历时,数据是无需且随机的(当然,后文会讲到有序化的方法).接下来,我们先创建一个map对象. dict:=make(map[string]int); 由于map的强类型,所以一切类型是静态的,map也不例外.从ma