是否有可能编写会导致编译时间较长的代码?

问题描述 投票:0回答:3

我正在开发我们的持续集成系统,并且我有兴趣模拟我们的系统处理意外长编译时间的情况。有什么办法可以让编译需要很长时间才能完成吗?或者可能会强制它进入某种需要大量时间来编译的循环?我正在寻找像 Thread.Sleep() 这样简单的东西,仅在编译而不是执行上。

使用预处理器指令怎么样?

有什么想法吗?

c# .net visual-studio visual-studio-2008
3个回答
9
投票

这是一个 MSBuild 睡眠任务,应该可以解决这个问题。 从 .csproj 文件中的 BeforeBuild 目标调用它,或者根据您的需要在任何合适的地方调用它。

MSBuild Community Tasks 也有一个睡眠任务,所以如果您需要使用他们的一些其他任务,我发现这非常有用。


7
投票

显然,睡眠任务是正确的选择。但是,如果您对使 C# 编译器花费任意长时间的方法感兴趣,仅供参考,可以在源代码中编码问题,强制重载解析算法执行 O(n^m) 算法。选择足够大的 n 和 m,你可以让编译器做你喜欢做的工作。

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

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


2
投票

我有一个同事曾经写过一个 16,000 行的 switch 语句。编译花了很长时间,然后当他进一步扩展它时,它实际上破坏了编译器。但不知怎的,我不确定这就是你的想法。

© www.soinside.com 2019 - 2024. All rights reserved.