我是一名游戏开发人员,我经常发现自己会根据自己的需要编写专门的模板化容器。
在观看我最喜欢的一个cppcon谈话之后,我有兴趣找到我的最终二进制文件的百分比,该二进制文件由给定的类/功能模板占用,以确定是否有一些提升是有益的。
Here,Nicolas提到Ubisoft的程序员使用他们的内部.obj分析器来确定他们的Array
类在他们将其归结为〜之前占用其总二进制大小的约80% 15%(在调试目标中)通过吊装。
我想知道如何编写这样的工具。具体来说,我正在寻找一个可以告诉我的工具:
我想知道如何在Windows和Linux环境中为使用gcc,clang和Microsoft编译器编译的代码执行此操作。
例如,我想要的是:
./<toolname> <compiler sepecific options and/or whatever> <class/function name> \
<list of object files>
如果要求函数的大小:
Summary for function <name>:
Total Size: <size in bytes> (<percentage>)
如果要求课程的大小:
Summary for class <name>:
Total Size: <size in bytes> (<percentage>)
member function <name>: <size> (<percentage>)
...
non-member function <name>: <size> (<percentage>)
...
我相信我可以通过一个稍微不重要的程序自己做这件事,但我认为如果有一些内置或免费提供的CLI工具的组合可以先在这里问一下这是一个好主意。用于获取此类信息。
如果您的解决方案包含记录良好的工具组合,我不需要解释。但是,如果您编写自定义工具,我希望大致了解您的方法。
答案 0 :(得分:0)
您可以使用调试信息编译程序,因此具有每个符号位置的符号表将出现在可执行标头中。例如,使用readelf或objdump来获取此信息。