经过前几个小结,本项目就已经基本完成了。使用本项目的高并发内存池大量地进行申请与释放不同大小的空间,与C库原生地malloc函数进行对比:
结果显示,在分配内存时,本高并发内存池ConcurrentMemoryPool速度要比malloc快五倍左右,但释放内存时速度非常慢,最终导致性能跟malloc几乎无差别。使用VS Studio2022编译器自带的性能探测器进行性能检测:
不难发现,程序的主要耗时都耗在了页缓存资源层的锁竞争问题上,PageCache层本身进行申请与分配空间时需要使用锁,多个函数内访问std::unordered_map<PAGE_ID, Span*> Page_Span;这个页号——SPan*的映射表时也要使用锁,这消耗了大量的时间,因此,接下来必须对这个问题进行性能优化。