gpt4 book ai didi

c++ - 那里有 "function size profiler"吗?

转载 作者:IT老高 更新时间:2023-10-28 22:34:55 26 4
gpt4 key购买 nike

在从事 C++ 项目三年后,可执行文件已增长到 4 MB。我想看看所有这些空间的去向。有没有工具可以报告最大的太空 pig 是什么?很高兴看到按类(类中的所有函数)、按模板(所有实例化)和按库(有多少属于 C 标准库和 STL?exe 中的每个库有多少?)

编辑:注意,我在 Windows 上使用 Visual C++。

最佳答案

在 Linux 中,您可以使用 nm显示可执行文件中的所有符号并按大小倒序排序:

$ nm -CSr --size-sort <exe>

选项:

  • -C 对 C++ 名称进行解码。
  • -S 显示符号的大小。
  • --size-sort 按大小对符号进行排序。
  • -r 反转排序。

如果你想获得每个命名空间或每个类的结果,你可以grep输出'namespace::', 'namespace::class_name::',

如果您只想查看在 可执行文件中定义的符号(而不是在其他地方定义的符号,例如在库中),则添加--defined-only。不过,按大小排序应该注意这一点,因为 undefined symbol 不会有大小。

对于 Windows,您应该仍然可以在二进制文件上使用 nm,因为 nm 支持 COFF二进制文件。你可以通过 cygwin 安装 nm,或者你可以将你的 windows 可执行文件复制到一个 linux 机器上并在那里运行 nm

你也可以试试dumpbin ,它转储有关 Windows 上的二进制文件的信息。您可以使用 /SYMBOLS 开关获取有关符号的信息,但它看起来不像直接提供有关其大小的信息。

关于c++ - 那里有 "function size profiler"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1051597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com