heiyeluren / xmm

XMM is a high performance third party memory manager for Go environments that is not affected by Gc and guarantees high performance. XMM是一个在Go语言环境中完全自主实现的第三方内存管理库,不依赖于Go本身的任何内存管理能力,纯自主实现能够应对各种场景下大小内存的 分配/释放 工作,能自主构建高性能的 链表/树/哈希表等各类数据结构,能良好完美的逃逸掉Go内置的GC机制,是构建高性能程序基础设施。
Apache License 2.0
1.12k stars 123 forks source link

我觉得超高性能场景就用rust或者c/c++ 吧 #7

Open hutu1st opened 2 years ago

heiyeluren commented 2 years ago

XMM主要场景是想要自主管理内存的场景,在Go中想要自主管理内存不经过GC是没办法的~ 只能字节流等等比较粗糙的方式,针对这种场景所以才开发了XMM。 XMM主要就是应对哪些从C++转到Go的想要自主管理内存,还有用Go无法管理内存想转到Rust的这些用户; 目前版本就是手动Free内存,不是不加上GC功能,是加了GC,就是跟go内置GC一样了,绕了一圈又回去了,所以才选择这种方式;

heiyeluren commented 2 years ago

另外,本质来说,XMM是为了解决那些想自己管理内存,提升程序性能,并不被GC影响性能的开发者和应用场景;如果一个CURD场景的,完全没必要使用XMM,内置的map/slice等基本就够用了。 XMM就是为了底层解决高性能以及自主内存可控制不会被GC影响等场景的问题存在的,就是为了弥补Go内置没有能够自己管理内存操作存在的。Go gc是一个大黑盒,几乎不暴露任何接口,对很多追求极致性能或者是想内存可控的程序员来说是非常痛苦的,只有自己遇到才会懂,所以才开发了XMM。

bronze1man commented 2 years ago

"我觉得超高性能场景就用rust或者c/c++ 吧" 我觉得 XMM 效果好的话还是有点用。 cgo接口性能是一个问题,另外 没人会写rust/c/c++的时候,先学后写太费时间了。

jinsuojinsuo commented 2 years ago

我觉得此库还挺有用的,1程序内缓存 像bigcache 要系列化反序列化,如果用此库就可以存储为go类型就可避免来回序列化,2.CGO场景 ,传给c的指针要避免被gc掉,用此库更好的与c结合

heiyeluren commented 2 years ago

@bronze1man @jinsuojinsuo 是的,两位大佬理解是对的~