6

Pracuję nad naszym systemem ciągłej integracji i jestem zainteresowany symulowaniem naszych systemów obsługi nieoczekiwanie długich czasów kompilacji. Czy istnieje sposób, aby kompilacja zajęła dużo czasu? A może zmusić go do jakiejś pętli, której skompilowanie zajmie dużo czasu? Szukam czegoś tak łatwego, jak Thread.Sleep() tylko w kompilacji, a nie w wykonaniu.Czy można napisać kod, który spowoduje długi czas kompilacji?

Co z używaniem dyrektyw preprocesora?

Wszelkie pomysły?

+13

Skorzystaj z C++ i metaprogramowania szablonów z szalonymi szablonami rekurencyjnymi? –

+4

Zmień ten komentarz w odpowiedź, ponieważ wtedy mógłbym głosować na niego poprawnie. –

+0

Wypróbuj funkcję ackermann w kodzie szablonu. Factorial in o (n!) Może również zrobić dobrze. – BCS

Odpowiedz

7

Oczywiście zadanie spania jest drogą do zrobienia. Ale jeśli interesuje Cię sposób, aby kompilator C# wziął dowolnie długo, FYI może kodować problemy w kodzie źródłowym, które wymuszają algorytm rozwiązywania przeciążenia na wykonaniu algorytmu O (n^m). Wybierz odpowiednio n i m, aby kompilator mógł wykonać tyle pracy, ile chcesz.

Oto mój artykuł na ten temat, jeśli jesteś zainteresowany.

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

+0

Awesome! Dzięki za świetne informacje. –

2

miałem raz współpracownika, który napisał instrukcję switch 16000 linii. Kompilacja trwała wiecznie, a kiedy ją rozwinął, nieco więcej, faktycznie zepsuł kompilator. Jakoś nie jestem pewien, o co ci chodziło.

Powiązane problemy