我正在研究我们的持续集成系统,我对模拟我们的系统处理意外长的编译时间感兴趣。有什么办法可以使编译花费很长时间来完成?或者也许强迫它进入某种需要大量时间编译的循环?我正在寻找像Thread.Sleep()一样简单的事情,只是在编译而不是执行上。是否有可能编写会导致编译时间过长的代码?
如何使用预处理器指令?
任何想法?
我正在研究我们的持续集成系统,我对模拟我们的系统处理意外长的编译时间感兴趣。有什么办法可以使编译花费很长时间来完成?或者也许强迫它进入某种需要大量时间编译的循环?我正在寻找像Thread.Sleep()一样简单的事情,只是在编译而不是执行上。是否有可能编写会导致编译时间过长的代码?
如何使用预处理器指令?
任何想法?
这是一个MSBuild sleep task应该做的伎俩。在.csproj文件中将它从BeforeBuild目标中调用,或者根据需要调用wherever is appropriate。
MSBuild Community Tasks也有一个睡眠任务,所以如果你需要使用一些其他任务,我发现它非常有用。
显然睡眠任务是要走的路。但是,如果您对使C#编译器任意长的方法感兴趣,仅供参考,可能会对源代码中的问题进行编码,这会迫使重载算法执行O(n^m)算法。选择足够大的n和m,你可以让编译器做你喜欢的工作。
这是我关于该主题的文章,如果你有兴趣。
太棒了!感谢您的好消息。 – 2009-10-19 14:38:01
我有一个同事曾经是谁写16000行switch语句。编译需要花费很长时间,然后当他再扩展一点时,它实际上破坏了编译器。不知何故,我不确定那是你的想法。
使用C++和模板元编程与疯狂递归模板? – 2009-10-19 02:32:22
将该评论转换为答案,因为那时我可以正确投票。 – 2009-10-19 02:36:52
尝试模板代码中的ackermann函数。 o(n!)中的因子也可能表现良好。 – BCS 2009-10-19 03:56:16