我正在研究我們的持續集成系統,我對模擬我們的系統處理意外長的編譯時間感興趣。有什麼辦法可以使編譯花費很長時間來完成?或者也許強迫它進入某種需要大量時間編譯的循環?我正在尋找像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