forloop-performance
Created|Updated|Benchmark
|Word Count:75|Reading Time:1mins|Post Views:
嵌套循环时不同顺序对性能的影响
看CSAPP第一课讲了这个,就做了个Go的测试。只能说确实每留意过这个会带来性能提升。
(但这个具体是和一级缓存有关还是什么的等到后面再补充。)
Author: Guader
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles
2024-07-03
singleflight|ants|gnet
Singleflightsingliflight: 提供重复函数调用抑制机制 前两天有人单飞,然后说什么 singlefly (我听叉了),我寻思双飞我知道,单飞是啥 看了一下,还挺不错的 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118// copy from singleflight.go// ...// call is an in-flight or completed singleflight.Do calltype call struct { wg sync.WaitGroup // These fields are wri...
2024-07-03
go1.21-release-notes
GO1.21 Release Notes 前两天更新Clash,编译时候提示我要更新到1.21,正好详细看看有哪些新东西原文 介绍大部分变化体现在工具链toolchain,运行时(runtime),以及库(libraries)的实现。还有版本号的一点小变化,从N.N到N.N.N,详情查看Go versions。 语言的变化增加了三个新的内键函数。 min, max: 计算给定数的最大最小值。详情 clear: 删除一个map的所有对象或是将slice的所有对象零值化。详情 现在更精确的指定了包初始化的顺序。新的算法是: 根据导入路径排序所有的包 重复以下操作,直到包列表为空: 找到列表中所有导入已经初始化完成的第一个包 初始化该包并从列表中移除 这可能会改变某些程序的行为,因为它们依赖于特定的初始化顺序,而这种顺序并没有通过显式导入来表达。在过去的版本中,规范对此类程序的行为并没有明确定义。新规则提供了明确的定义。 已经进行了多项改进,提高了类型推断的能力和精度。 现在可以调用一个(可能部分实例化的)泛型函数,其参数本身也是(可能部分实例化的)泛型函数。编译器将尝...
2024-07-03
Write a hash table
SummaryThis is a tiny little demo of hash table. But it can already be used to understand the map in golang in some aspects. Steps define data structure implement hash function API insert search delete Code123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132...
2024-07-03
string-concatenation-benchmark
字符串拼接的基准测试结果很明显,只有两个字符串时直接相加+还不错,数量到10个开始基本都是strings.Builder了。 123456789101112131415161718192021222324252627282930goos: linuxgoarch: amd64pkg: github.com/Guaderxx/goproj/pkg/teststrcpu: AMD Ryzen 7 5800H with Radeon Graphics BenchmarkStringCombine2/Plain-16 47900655 25.91 ns/op 2 B/op 1 allocs/opBenchmarkStringCombine2/bytes.Buffer-16 20379310 100.1 ns/op 66 B/op 2 allocs/opBenchmarkStringCombine2/fmt.Sprintf-16 ...
2024-07-03
generics
泛型的介绍 突然想起来这部分其实一直没系统的看下。今天的每日一题又很简单,整理下。原文 介绍Go 1.18增加了泛型的支持。泛型是Go开源发布依赖的最大变化。这篇文章会介绍新的语言特性。不会覆盖到所有细节,但会触及到所有重要的点。对于更细节,更长描述,包含很多示例的文章,参见推荐文档。对于语言变化更精确的描述,见更新后的语言规范。(注意,实际的1.18实现对提案文件所允许的内容施加了一些限制;规范应准确无误,未来的版本可能会取消部分限制。(现在都1.21.1了,直接看新的就行。) 泛型是一种编写独立于所使用的特定类型的代码的方法。现在可以写函数和类型来使用一组类型中的任何一个。 泛型在语言中增加了三个新的大事: 函数和类型的类型参数 定义接口类型作为类型集,包括没有方法的类型 类型推断,在很多情况下允许调用函数时省略类型参数 类型参数函数和类型现在可以有类型参数。一个类型参数列表就像普通的参数列表,只不过使用方括号包含[]. 为了更清楚,让我们从一个无泛型的计算浮点数值最小值的Min函数开始: 123456func Min(x, y float64) float64 ...
Comments
Contents