教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang map和for循环的查找效率对比

golang map和for循环的查找效率对比

发布时间:2022-01-04   编辑:jiaochengji.com
教程集为您提供golang map和for循环的查找效率对比等资源,欢迎您收藏本站,我们将为您提供最新的golang map和for循环的查找效率对比资源

测试代码:

<pre class="brush:go;gutter:true;">package main import ( "encoding/json" "fmt" "math/rand" "strconv" "testing" "time" ) func TestMap(t *testing.T) { num := 100 testdata := initTestData(num) random := rand.New(rand.NewSource(time.Now().UnixNano())) searchs := make([]int, num) for i := 0; i < num; i { searchs[i] = int(random.Int31n(int32(num))) } find := true t.Log(find) start := time.Now() hash := make(map[int]*TestStruct, num) for i := 0; i < num; i { hash[testdata[i].Id] = testdata[i] } for _, item := range searchs { _, has := hash[item] find = has } end := time.Now() t.Log("cost:", end.UnixNano()-start.UnixNano()) start = time.Now() for _, item := range searchs { for _, data := range testdata { if item == data.Id { find = true break } } } end = time.Now() t.Log("cost:", end.UnixNano()-start.UnixNano()) } type TestStruct struct { Id int No string } func initTestData(num int) []*TestStruct { result := make([]*TestStruct, num) for i := 0; i < num; i { result[i] = &TestStruct{ Id: i 1, No: strconv.Itoa(i 1), } } return result } </pre>

  运行测试用例发现数据集比较小的情况下,两种简单的搜索方式基本上没有什么区别,当数据量过大(>1000)时,使用hash进行索引,速度会快很多 (hash和排序后进行快速搜索的效率差不多)

转载于:https://www.cnblogs.com/zp900704/p/6385650.html

到此这篇关于“golang map和for循环的查找效率对比”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang map和for循环的查找效率对比
golang 并发访问map遇到的问题
Go range实现原理及性能优化剖析
golang for range原理(转载)
Go Map 简介 和 实现解析
golang key map 所有_golang系列——高级语法之map
深度解密Go语言之 map
Go语言性能优化- For Range 性能研究
golang:map 的底层实现原理是什么
Javascript循环优化详解

[关闭]
~ ~