【问题标题】:Where can one find a profiler for reducing binary size on MSVC++/Windows?在哪里可以找到用于减少 MSVC++/Windows 上的二进制大小的分析器?
【发布时间】:2011-12-11 00:24:04
【问题描述】:

我有很多使用拨号的用户。另外,我要为带宽付费。我有兴趣让我的应用程序更小,以帮助解决这两个问题;它现在大约是 200k,但如果它在 100-150k 范围内会很好。

但是,我不知道我的二进制文件中哪些构造和位置使用的大小最多,这使得调整变得困难。

是否存在任何有助于解决二进制大小问题的免费分析器?

【问题讨论】:

  • 它没有回答问题,但如果您的二进制文件适用于 Windows 或 Linux,您可以使用 UPX 来减小大小。
  • 您使用的是什么操作系统以及您使用的是什么编译器?
  • @Mark:是的,我已经在使用 PECompact。
  • @Aix:对不起,Windows,MSVC++。我将在其中进行编辑。

标签: c++ windows visual-c++ profiling filesize


【解决方案1】:

Visual Studio 可以选择生成一个映射文件,该文件将显示分配给程序每个部分的地址。在项目属性中,Linker->Debugging->Generate Map File

【讨论】:

  • 那么这给了你每个函数的一般大小?
  • @Billy:我就是这么做的。与其说是让函数更小,不如说是摆脱了我真正不需要的整块库。
【解决方案2】:

当我使用 C/C++ 为嵌入式平台进行开发时,我曾经能够看到链接器的结果,尤其是 data/rodata/bss/code 部分的大小(如果你不知道,请参阅 http://en.wikipedia.org/wiki/Data_segment理解那些话)然后我可以潜入特定区域以找到大元素。

通过谷歌搜索“代码大小优化 c++”,我发现了一个现有的 SO 问题:Reducing C++ code size,这似乎完全符合我的意思:“avr-gcc 生成一个映射文件,因此您可以查看它并查看它是什么占用这么多空间。”

通过谷歌搜索“代码大小分析器 c++”,我发现了这个关于代码大小的页面:http://www.murrayc.com/blog/permalink/2006/02/15/c-code-size/ 有一个有趣的评论,而不是导致 DWARF 实用程序也可以做到这一点:http://reality.sgiweb.org/davea/dwarf.html

现在轮到您深入研究这些结果了!祝你好运!

【讨论】:

  • 对不起。我应该更明确一点。 +1 努力:P
【解决方案3】:

GCC 提供了一个选项 (-Os) 用于减小大小,请参阅 gcc(1)。不确定 Visual Studio 是否提供类似的功能。

我也猜想您已经将压缩的二进制文件发送给您的客户。

【讨论】:

    猜你喜欢
    • 2014-11-18
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多