2010-09-15 31 views
2

對我們在C#中的函數,它使用ICSharpCode SharpZipLib BZip2壓縮解壓縮方法來解壓縮一些XML我們從數據庫中獲取。我們發現在我們的兩個Web服務器(Win 2K和Win 2003 Svr)上存在一個問題,此代碼需要很長時間才能執行,並導致這些服務器上的CPU利用率達到最大值。我們已經隔離了代碼並將其放入Winforms應用程序進行測試,並且在相同機器上的Winforms應用程序中運行相同的代碼時,代碼運行得更快。這與SharpZipLib組件相同。同C#代碼在ASP.Net應用程序與WinForms應用程序較慢的同一臺機器

到目前爲止,我們都在虧損,爲什麼代碼運行,因此asp.net進程下慢得多。

任何建議,想法?

在此先感謝!

+0

你是否預編譯了asp.net? – recursive 2010-09-15 15:02:13

+0

確保ASP.NET配置爲發佈版本。 – 2010-09-15 15:03:38

回答

1

使用profiler。問題可能在解碼代碼之外。你,我和SO的其他人不會給出比一個探查者會話給出的更多信息。

1

你試過看代碼像RedGate ANTS Performance Profiler探查看到代碼是做什麼樣的事情? ASP.NET應用程序的內部託管

代碼比一個WinForm應用程序完全不同的條件下運行。通過IIS輔助進程加載時,您可能會遇到ThreadPool問題。

您也可以運行到一個問題,你的代碼是不是在你的ASP.NET應用程序預編譯。

之所以這麼說,通過運行探查您的應用程序會爲您提供最佳觀賞到事情是如何工作的。

+0

這不是預編譯;除了稍後編譯以外,DLL將不會有任何不同。 – 2010-09-15 15:09:40

+0

@Jan Jongboom - DLLs不會有任何不同,但在編譯過程中執行時會有一些察覺到的時間差異。 – 2010-09-15 15:16:09

+1

是的,但只有第一個請求。此外,他們正在運行多個網絡服務器,所以我猜他們正在做正確的方式:-) – 2010-09-15 15:24:13

-1

確保您正在創建一個Web項目並編譯它以進行發佈構建。 (Build - >配置管理器)

+0

他使用外部庫,所以他們的DEBUG/RELEASE設置不會介意該代碼。 – 2010-09-15 15:10:16

+1

@Jan:請記住,調試/發佈只是JIT預計會兌現的一點,但並非總是如此。如果你在調試器中運行,默認行爲是JIT發佈版本爲調試(未優化)。也許沿着這些線路發生在這裏。 – 2010-09-15 15:45:54

相關問題