这个reddit thread引起了我对自定义内存分配器的注意。用户Rohmboid说,例如:
如果有的话,人们不会写自己的池分配器 不是一个明显的好处。
他们怎么知道有一个?
如果管理内存所花费的时间仅占我程序持续时间的不到1%,我不想浪费我的时间/金钱/精力来编写自定义分配器。我也不想切换到自定义分配器,也无法告诉加速。所以我想知道:我如何衡量(或至少估计)分配/释放/获取内存所花费的时间?
答案 0 :(得分:4)
我怎么知道有一个?
没有必要优化代码中不是热门路径的东西。
如果分配器(A)占用CPU时间的5%,并且您的应用程序占用了另外95%,则将分配器加速两次会使(5/2)/100 = 2.5%
提升。现在尝试加速B甚至一小部分。
最简单的方法是使用IDE内置的分析器;虽然我使用的是英特尔VTune,但MSVS相当不错。它的易用性非常好,它只是向您展示 - 优化这里。
使用性能分析程序还有其他好处;你根本不必修改你的代码;当您想要更改分析选项并再次运行时,您也不必重新编译。话虽这么说,你的应用程序中的计时器也可以提供很好的结果,尽管很少需要将直接放在内的分配器中。最好不断缩小程序花费最多时间的可能位置。