2024年8月30日
Go的世界除了Plan9还有个SSA 参考: https://blog.csdn.net/bigwhite20xx/article/details/127469787 (完)……
阅读全文
2024年4月9日
Go的编译器先将源代码编译成Plan9风格的汇编指令,之后再通过汇编器和链接器生成不同平台的可执行程序。再深入研究源代码执行表现时,经常需要观察汇编指令,了解基本的Plan9汇编语法不可或缺。 CPU寄存器 32位x86架构的CPU有8个32位的通用寄存器(EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI),在汇编语言中可以 ………
阅读全文
2023年4月6日
很多时候我们需要对数据进行复制,在申请新的内存空间之后,我们可以用copy、append、for来复制拷贝。性能如何呢? 拷贝测试 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ………
阅读全文
2023年3月22日
前面已经分析过在少量键值对检索的场景下,map的性能不如字符串数组直接检索。当时我们是用字符串数组循环遍历的方式做的测试。而实际上这种方式还有优化的空间。下面我们就来分析下字符串数组如何检索。 字符串== 看下面字符串比较的性能基准测试: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ………
阅读全文
2023年3月20日
开发中经常需要用到map数据类型,主流编程语言也都实现了类似的功能,比如叫哈希、散列、map等等,实现数据结构都类似,性能不相上下。网上有很多关于map实现解析的文章。参考: https://www.jianshu.com/p/0a777dc7f7ae ………
阅读全文
2023年3月6日
https://blog.csdn.net/panda_8/article/details/106722195 Plan9汇编手册 https://blog.csdn.net/qq_45091883/article/details/123515862 汇编示例,可以仔细看看 因为编译器优化的问题,很多时候代码性能的优劣其实和我们想象中是不 ………
阅读全文
2022年8月8日
Go中的字符串 Go中的字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节)。由于该编码对占用字节长度的不定性,Go 中的字符串里面的字符也可能根据需要占用 1 至 4 个字节,这与其它语言如 C++、Java 或者 Python 不同(Java 始终使用 2 个字 ………
阅读全文
2021年11月3日
现代CPU一般具有三级缓存,目的是追求性价比。CPU在存取内存的时候存在缓存命中的问题,因此一般内存占用少的程序有更高的缓存命中率,一般性能会更好,但是内存占用的大小究竟对程序性能有多大影响呢?今天我们用WEB框架中常见数据结构的设计来分析一下性能。 Web框架中间件设计 在Web框架中常见的路由数据结构都是数,每个叶子节点代表一条路由, ………
阅读全文
2021年10月12日
Golang中GMP的介绍参考:/2020/12/27221039-008-gmp-model.html 操作系统会在物理处理器上调度线程来运行,而Go语言的运行时会在逻辑处理器P上调度goroutine来运行。每个逻辑处理器都分别绑定到单个操作系统线程M。在1.5版本以后,Go语言的运行时默认会为每个可用的物理处理器分配一个逻辑处理器。 ………
阅读全文
2021年8月31日
交叉编译 交叉编译主要是两个编译环境参数 $GOOS 和 $GOARCH 的设定。$GOOS代表编译的目标系统,$GOARCH代表编译的处理器体系结构。 $GOOS可选值如下: 1 2 3 4 5 6 7 8 9 darwin dragonfly freebsd linux netbsd openbsd plan9 solaris ………
阅读全文