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机制,是构建高性能程序基础设施。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

hutu1st opened this issue · comments

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

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

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

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

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

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