从较小的源文件生成大对象文件

时间:2014-05-21 21:22:01

标签: c++

我需要用大对象文件来强调测试我的程序。我已经研究过C ++模板和内联函数/模板,但是无法获得我想要的obj / source size(大约50)。我希望能够将单个源编译为单个目标文件,后者的最大大小为200MB。任何高层次的想法都将受到高度赞赏。

附加编辑:我创建了大型/复杂和多样化(随机)模板函数,并开始使用唯一类型/参数调用它们(创建实例化)。这将obj / source比率按预期增加到某一点(大约12)。然后比率显着下降(大约1),我认为是gcc超越我并优化我的方法。我还研究了强制gcc来内联创建所有函数,但是我的测试还没有显示出改进。

使用预处理器来编写膨胀不是我希望完成的有效技术。

1 个答案:

答案 0 :(得分:0)

您可以使用预处理器在预处理时生成大量代码,但这可能会让您觉得源文件本身很大。

一般来说,与编写它的代码相比,C ++编译器生成的机器代码相对较小(以字节为单位)。 占用空间的一件事是字符串资源。现在,如果你反复使用相同的字符串,编译器将足够聪明地意识到它只需要存储一次,但如果每次更改资源一点,那么每个变体可能会单独存储。可以使用预处理器完成此更改。

另一个想法就像你说的那样,使用模板为很多不同类型生成许多函数。

你想要完成的是什么?可能有更好的方法。