2010-09-15 2 views
2

У нас есть функция в C#, которая использует метод декомпрессии ICSharpCode SharpZipLib BZip2 для распаковки некоторого XML, который мы получаем из базы данных. Мы заметили проблему с двумя нашими веб-серверами (Win 2K и Win 2003 Svr), что этот код занимает очень много времени для выполнения и приводит к максимальному использованию процессора на этих серверах. Мы изолировали код и поместили его в приложение Winforms для тестирования, а при запуске этого же кода в приложении winforms на тех же машинах код работает намного быстрее. Это с той же сборкой SharpZipLib.Тот же C# код медленнее в приложении ASP.Net по сравнению с Winforms App на том же компьютере

До сих пор мы не понимаем, почему код работает намного медленнее в процессе asp.net.

Любые предложения, идеи?

Заранее благодарен!

+0

Вы предварительно компилируете asp.net? – recursive

+0

Убедитесь, что ASP.NET настроен для создания релизов. –

ответ

1

Используйте profiler. Проблема может быть где-то вне кода депроцесса. Вы, я и остальные люди в SO, не дадим больше информации, чем даст одна профайлер.

1

Вы пробовали просматривать код в Профилире, например RedGate ANTS Performance Profiler, чтобы увидеть, что делает код?

Код, размещенный внутри приложения ASP.NET, запускается в совершенно разных условиях, чем приложение WinForm. Вы можете столкнуться с проблемами ThreadPool при загрузке через рабочий процесс IIS.

Вы также можете столкнуться с проблемой, когда ваш код не предварительно скомпилирован в вашем приложении ASP.NET.

Все, что сказано, запуск вашего приложения через Profiler позволит вам наилучшим образом разобраться в том, как все работает.

+0

Это не предварительная компиляция; DLL не будет ничем иным, кроме компиляции позже. –

+0

@Jan Jongboom - DLL не будут отличаться друг от друга, но при выполнении компиляции будет наблюдаться некоторая разница во времени. –

+1

Да, но только первый запрос. Кроме того, они работают с несколькими веб-серверами, поэтому я предполагаю, что они все равно делают правильный путь :-) –

-1

Убедитесь, что вы создаете веб-проект и скомпилируете его для сборки релиза. (Build -> менеджер конфигурации)

+0

Он использует внешнюю библиотеку, поэтому их настройки DEBUG/RELEASE не будут учитывать этот код. –

+1

@Jan: Имейте в виду, что отладка/релиз - это немного, что ожидается, что JIT будет чтить, но не всегда. Если вы запустите в отладчике, по умолчанию используется JIT-релиз в качестве отладки (unoptimized). Возможно, что-то в этом роде происходит здесь. –

Смежные вопросы