2010-09-21 8 views
6

Eine unserer kritischen Unternehmens-Apps (C#) knackt Hi-Rez-Bilder und wir haben große Anstrengungen unternommen, es zu optimieren. Es führt über 2,5 Millionen Operationen in ~ 2.5 Sekunden durch.Das kompilierte Programm läuft VIEL langsamer, nachdem ich auf VS 2010 gewechselt habe

Wir haben VS 2005 seit Jahren verwendet, und letzte Woche zog alles über VS 2010

Same genauen Code-Projekt.

Jetzt, wenn ich die App erstellen und ausführen (außerhalb der VS 2010 IDE), dauert die gleiche Operation jedes Mal 5 + Sekunden.

Dies ist ein großes Problem, und verletzt absolut mein Gehirn. Ich habe es derzeit auf Release-Modus eingestellt (wie ich es in VS 2005 hatte).

Eine Idee, was könnte eine Verdoppelung der Ausführungszeit verursachen, wenn der Code genau derselbe ist?

+0

Wenn Sie zu Visual Studio gewechselt haben, haben Sie auch Target Framework-Versionen geändert? –

+0

Ja, wir haben zu .NET 4 – Ducain

Antwort

4

Sie sehen wahrscheinlich die Änderung, weil Sie von der .NET 2.0-Laufzeitumgebung auf die .NET 4.0-Laufzeit umgestellt haben.

Sie erwähnen Sie hoch optimiert den Code für die Leistung. Meine Vermutung ist, dass einige der Optimierungen tatsächlich Ihre Leistung beeinträchtigen, anstatt sie jetzt zu unterstützen (da sich die internen Implementierungsdetails des Frameworks, auf die Sie sich zur Optimierung verlassen haben, geändert haben).

Mein Vorschlag wäre, Ihren Code durch einen Profiler (wie Redgates ANTS Performance Profiler oder JetBrains DotTrace) laufen und sehen, wo die neuen Engpässe sind. Sie können von dort vorwärts gehen.

+0

gewechselt. Ich werde denen einen Blick geben. Die Optimierungen sind jedoch ziemlich einfach/solide - nicht mit einem Int32, wenn ein Byte funktioniert, etc. Keine ausgefallenen Tricks. – Ducain

+0

@Ducain: Wenn das, was Justin vorschlägt, wahr ist, kannst du auch versuchen, .NET 2.0 in VS 2010 zu targetieren und zu sehen, ob du die Leistung dorthin zurückbringen kannst, wo sie war. –

+0

@Adrift - leider kann ich nicht. Ein Projekt, auf das diese App verweist, wird jetzt auf 4 (aus der Not) gesetzt. Das Projekt ist eine Datenzugriffsschicht und hat somit keinen Einfluss auf den Codebereich, mit dem ich es hier zu tun habe, aber um die Lösung zu kompilieren, muss ich nun .NET 4 anvisieren. – Ducain

Verwandte Themen