6

我正在研究我们的持续集成系统,我对模拟我们的系统处理意外长的编译时间感兴趣。有什么办法可以使编译花费很长时间来完成?或者也许强迫它进入某种需要大量时间编译的循环?我正在寻找像Thread.Sleep()一样简单的事情,只是在编译而不是执行上。是否有可能编写会导致编译时间过长的代码?

如何使用预处理器指令?

任何想法?

+13

使用C++和模板元编程与疯狂递归模板? – 2009-10-19 02:32:22

+4

将该评论转换为答案,因为那时我可以正确投票。 – 2009-10-19 02:36:52

+0

尝试模板代码中的ackermann函数。 o(n!)中的因子也可能表现良好。 – BCS 2009-10-19 03:56:16

回答

7

显然睡眠任务是要走的路。但是,如果您对使C#编译器任意长的方法感兴趣,仅供参考,可能会对源代码中的问题进行编码,这会迫使重载算法执行O(n^m)算法。选择足够大的n和m,你可以让编译器做你喜欢的工作。

这是我关于该主题的文章,如果你有兴趣。

http://blogs.msdn.com/ericlippert/archive/2007/03/28/lambda-expressions-vs-anonymous-methods-part-five.aspx

+0

太棒了!感谢您的好消息。 – 2009-10-19 14:38:01

2

我有一个同事曾经是谁写16000行switch语句。编译需要花费很长时间,然后当他再扩展一点时,它实际上破坏了编译器。不知何故,我不确定那是你的想法。

相关问题