none
Время выполнения кода RRS feed

  • Вопрос

  • Добрый день!

    Столкнулся со следующей проблемой: на ноутбуке (VS2010Pro VB) написал DLL для сбора информации из сторонней программы. На моем ноуте этот процесс выполняется около одной секунды. Переношу эту DLL на другой компьютер и запускаю - время выполнения того же кода более минуты, т.е. в 60 раз медленнее. Проверил на третьей машине - опять около минуты.

    Машина 1 (время выполнения 1-3 сек.)
    Win7 x64
    Intel i7
    4 Gb RAM

    Машина 2 (время выполнения около 1 мин.)
    Vista x64
    Intel core 2 Duo
    4 Gb Ram

    Машина 3 (время выполнения около 1 мин.)
    Win7 x64
    Intel i5
    8 Gb RAM

    Программа, из которой высасывал данные, везде одинаковая (x64).

    В чем может быть проблема? Из-за чего такая большая разница?

    4 марта 2011 г. 10:32

Ответы

  • Имхо, самый простой вариант — установить trial-версию RedGate ANTS Performance Profiler (или аналогичный профайлер) и посмотреть, сколько какая строка выполняется. Без кода мы долго будем гадать о причинах.
    • Помечено в качестве ответа Abolmasov Dmitry 12 марта 2011 г. 14:37
    5 марта 2011 г. 5:30
  • Берете dotTrace и запускаете на двух машинах - там где медленно и там где быстро. Потом производите сравнение результатов. А дальше будет ясно, какая часть API тормозит, так что останется только погуглить дабы понять почему это так.
    - Dmitri Nesteruk, MVP C#, Microsoft Partner
    • Помечено в качестве ответа Abolmasov Dmitry 12 марта 2011 г. 14:37
    6 марта 2011 г. 19:11

Все ответы

  • Думаю стоит начать с оценки производительности CPU по каким-либо тестам или обзорам, чтобы узнать на сколько примерно различаются показатели производительности данных процессоров.

    Так же производительность может зависеть от засоренности ОС. Проверять лучше всего на свежеустановленной ОС.

    Еще есть вариант добавить трассировочный код, для сбора статистики в разных участках работы программы для локализации медленного места. А там уже можно будет дальше рассуждать.


    E-mail: Svatoslav.Pankratov@gmail.com Blog: svyatoslavpankratov.blogspot.com
    4 марта 2011 г. 20:23
  • Тоже как то возился с оценкой производительности. Исходя из опыта, смею утверждать, что такая большая разница явилась следствием разницы в количестве одновременно запущенных программ. Попробуйте протестировать в безопастном режиме (если возможно) или насколько возможно выгрузите программы, включая антивирус, и остановите службы.


    http://voropaev-vadim.narod.ru/
    4 марта 2011 г. 21:31
  • Имхо, самый простой вариант — установить trial-версию RedGate ANTS Performance Profiler (или аналогичный профайлер) и посмотреть, сколько какая строка выполняется. Без кода мы долго будем гадать о причинах.
    • Помечено в качестве ответа Abolmasov Dmitry 12 марта 2011 г. 14:37
    5 марта 2011 г. 5:30
  • У меня однажды мой комп тормозил, как потом оказалось, от перегрева, причем порядок тормозов был примерно таким же - 50-100 раз.
    Прочистил охлаждение, вентилятор, и все устаканилось.
    5 марта 2011 г. 7:13
  • Берете dotTrace и запускаете на двух машинах - там где медленно и там где быстро. Потом производите сравнение результатов. А дальше будет ясно, какая часть API тормозит, так что останется только погуглить дабы понять почему это так.
    - Dmitri Nesteruk, MVP C#, Microsoft Partner
    • Помечено в качестве ответа Abolmasov Dmitry 12 марта 2011 г. 14:37
    6 марта 2011 г. 19:11