这reddit thread引起了我对自定义内存分配器的注意。例如,用户 Rohmboid 说:
People wouldn't be writing their own pool allocators it if there wasn't a clear benefit.
他们怎么知道有一个?
如果花在管理内存上的时间只占我程序持续时间的不到 1%,我不想浪费我的时间/金钱/精力来编写自定义分配器。我也不想切换到自定义分配器而无法判断加速。所以我想知道:我如何衡量(或至少估计)分配/释放/获取内存所花费的时间?
最佳答案
How do I know there is one?
分析您的代码。
优化代码中非热路径的内容毫无意义。
如果分配器 (A) 占用了 5% 的 CPU 时间,而您的应用占用了另外 95%,将分配器加速两次可以得到 (5/2)/100 = 2.5%
促进。现在尝试将 B 的速度提高一小部分。
如何?
最简单的方法是使用IDE内置的profiler; MSVS 一个相当不错,尽管我使用的是 Intel VTune;它的易用性非常好,它只是向您展示 - 此处优化。
使用分析程序有额外的好处;你根本不需要修改你的代码;当您想要更改分析选项并再次运行时,您也不必重新编译。也就是说,您的应用程序中的计时器也可以提供不错的结果,尽管它们很少需要直接放置在分配器中。最好不断缩小程序可能花费最多时间的地方。
关于c++ - 如何衡量管理内存所花费的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15050572/