本文基于Go 1.13
创建系统线程以及在系统线程间切换,会对程序的内存和性能造成较大的开销。Go
的目标是尽量利用CPU
多核资源。设计之初就考虑了高并发性。
个人笔记,还没写完,
几天前,我读了一篇关于BigCache
的文章,我对它是如何做到以下两点十分感兴趣:
于是我去阅读了它的代码。我觉得它的做法很赞,所以我写了这篇文章来与你分享。
BigCache 是一个快速,支持并发访问,自淘汰的内存型缓存,可以在存储大量元素时依然保持高性能。BigCache将元素保存在堆上却避免了GC的开销。 —— 摘自《BigCache README 中的简介》
1 | // BigCache README 中的简单使用示例 |
在Go语言中,结构体的大小取决于内部属性的类型以及它们的排列顺序。
1 | struct { |
上面这个结构体的大小和下面这个结构体的大小是不同的,尽管它们只是属性的定义顺序不同。