C++ 如何度量代码大小?

C++ 如何度量代码大小?,c++,visual-c++,compilation,native,code-size,C++,Visual C++,Compilation,Native,Code Size,在讨论某些特性或优化时,经常提到代码大小 虽然我当然理解基本概念,即编译成机器代码的代码集合将产生X字节的机器代码(加上静态数据),但我最近意识到,我非常不确定如何实际测量给定二进制文件的代码大小 那么,如何度量代码大小? 您是否只检查生成的二进制文件(“可执行文件”.exe)有多大? 您是否需要诸如dumpbin.exe之类的工具或某些特定的链接器标志来获得详细结果?我认为您最好的选择是反汇编二进制文件 在代码优化的上下文中,总代码大小通常不是什么意思,而是程序某些特定部分的代码大小。您可以告

在讨论某些特性或优化时,经常提到代码大小

虽然我当然理解基本概念,即编译成机器代码的代码集合将产生X字节的机器代码(加上静态数据),但我最近意识到,我非常不确定如何实际测量给定二进制文件的代码大小

那么,如何度量代码大小?

您是否只检查生成的二进制文件(“可执行文件”
.exe
)有多大?
您是否需要诸如
dumpbin.exe之类的工具或某些特定的链接器标志来获得详细结果?

我认为您最好的选择是反汇编二进制文件


在代码优化的上下文中,总代码大小通常不是什么意思,而是程序某些特定部分的代码大小。

您可以告诉链接器生成映射文件。这提供了最详细的信息,很容易获得(也就是说,手工逆向工程的代码非常少)


根据代码的不同,在对象文件上使用dumpbin可以产生有意义的结果,但也可以产生简单的“匿名对象”——特别是(独占地?)当您要求生成链接时代码时。

如果您指的是以字节为单位的.exe,我认为您考虑过了这个问题。您的文件浏览器应该在右边显示文件的大小(如果没有,请右键单击文件并打开属性)。您要查找的文件应位于以.exe命名的调试中
如果是别的,对不起。

那么我会在对象文件上使用dumpbin,而不是在最终的可执行文件上?@MartinBa:你可以在任何一个文件上使用它。对象文件往往更容易处理,因为它有较少的其他“东西”你不关心。嗯。。。如果我在一个对象文件上测量代码大小,那会不会误导wrt。链接器优化?(在使用模板时折叠相同的代码段,例如,等等。)@MartinBa:可能是这样,这取决于您所关心的(不过,我不确定在关闭LTCG的情况下会发生多少(如果有的话)折叠等情况,正如回答中提到的,如果打开LTCG,您将无法从对象文件中获得任何信息)。