2010-09-22 45 views
8

我还没有看到一个问题,我发现这个问题非常有趣。所有其他线程似乎都在讨论强制性问题,即切换到动态链接或仅分配工作负载。我更感兴趣的是找出造成链接的原因。查找链接时间瓶颈

问题是,我真的没有看到任何官方的方式来从链接器获得相关的指标,至少不是VS链接器。有/ verbose开关可以让你对连接器的功能有很深入的了解,但是它根本不会给你任何细节的时间。

我一直在考虑运行链接器进程从一个工具,每行的基础上做实际测量。虽然这不会提供准确的时间安排,但它可能足以准确地找出链接瓶颈。

任何人都知道一个更好的方法,或者甚至是这个任务的工具?

+0

很难看出这一点,除了增量链接支持外,链接器的旋钮非常少。链接本质上是一个O(n^2)问题,你需要一个更小的n。 – 2010-09-22 12:30:38

回答

6

http://gameangst.com/?p=46上发现了一篇很好的文章系列,它对链接时间会产生什么影响。最后,作者还提供了一个他称之为符号排序的程序(在http://gameangst.com/?p=320)。这是我正在寻找的计划,因为它极大地帮助确定在哪里花费你的努力。它并没有伤害,它花了大约10秒来启动并运行,并且工作!

+0

非常好的链接,谢谢! – 2012-08-10 01:46:45

3

虽然没有直接回答你的问题:

在VS链接器还负责代码生成和全局优化,您可以尝试禁用“链接时代码生成”来减少链接时间。

编辑:因此,由于链接器的全局性质,您不能说链接模块X需要10%的时间。

+2

您可能是_decrease_连接时间... – 2010-09-22 12:01:59

+1

@Assaf Lavie,更正,谢谢。 – ybungalobill 2010-09-22 12:03:48

+1

这是一个很好的观点,如果能够对LTCG和优化阶段进行基准测试,这将是一件好事。总体而言,我只是认为编译器和链接器应该能够使用正确的开关输出性能指标,因为编译和链接时间在大代码基础上是常见的问题。它还可以帮助图书馆如助推器更容易基准我们知道影响链接和编译时间负面的更奇特的构造。 – Ylisar 2010-09-22 12:06:22