Улучшение производительности приложений

Хотите повысить производительность приложения С#.Net.

В моем приложении я использую сторонние Interop/Dll для обработки файлов .doc.

Это простая операция, Какой Pass Input/Output FilePath для Interop dll... & dll выполнит входной файл текстовой формы.

Чтобы улучшить производительность, я пробовал,

  • Выполните 2 therad для обработки 32 файлов. (каждый файл процесса Thread).
  • Выполнить код приложения, создав 2 новых AppDomains (каждый из 16 файлов процесса AppDomain Code)
  • Выполнение кода с помощью TPL (Task Parellel Library)

Но все параметры занимают примерно одно и то же время (32 секунды) для обработки 32 файлов. Процесс вручную обрабатывался 32 сек для обработки 32 файлов.

Просто попробовал одно. Когда я создал образец exe для обработки 16 файлов в качестве ввода и вывода для ссылочного пути, указанного в TextBox.

.. Я открываю экземпляр 2 exe для обработки. 1 exe имеет разные 16 входных файлов и выход. Создан с входным файловым трактом 2 exe имеет разные 16 входных файлов и выход. Создан с пути входного файла.

Когда я нажимаю кнопку "Пуск" для обоих exe..it использует 100% процессор и эффективно использую оба ядра, а процесс завершен в течение 16 секунд для 32 файлов.

Можем ли мы предоставить такой явный prallism для улучшения моего приложения Peformance?

2 ответа

Путь - это профилировать ваше приложение и видеть, где он проводит свое время. Затем вы можете планировать оптимизацию узких мест. Попытка оптимизировать, не зная, где медленная часть - это не лучшее использование вашего времени, когда вы колотите в темноте, надеясь, что что-то будет работать. Узнайте, где эти проблемы, и обращайтесь к ним напрямую.

Есть несколько вопросов, которые рекомендуют профайлеры. Отметьте этот вопрос и этот вопрос.


Проблема может заключаться в том, что ваш сторонний инструмент каким-то образом синхронизирует потоки. Это может косвенно произойти, если для выполнения этой работы используются COM-компоненты с одним потоком ( "STA" ). Вы можете проверить это, разбив приложение во время работы в отладчике и посмотрите на стеки вызовов для рабочего и пользовательского потока.

licensed under cc by-sa 3.0 with attribution.