При запуске управляемого приложения 2-й раз показывает другую производительность, чем 1-й

пытались ли вы использовать transform: translate(); для компенсации количества пикселей, которые он будет перемещать вправо. Для получения дополнительной информации о transform translate, вы можете посмотреть по следующей ссылке. https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translate

5
задан Niranjan U 28 January 2009 в 09:27
поделиться

4 ответа

Я думаю, что существует комбинация эффектов здесь:

Во-первых, выполнение той же функции в тестовой обвязке многократно, с теми же данными каждый раз, вероятно, улучшится потому что:

  • JIT-компиляция оптимизирует код, который выполняется наиболее часто уже для улучшения производительности (как упомянуто Cory Foy)
  • Код программы уже будет в дисковом кэше (как упомянуто Crashwork)
  • Некоторый код программы будет в кэше ЦП, если это будет достаточно маленьким и выполнено достаточно часто

Если данные отличаются для каждого выполнения функции в тестовой обвязке, это могло объяснить, почему закрытие и выполнение тестовой обвязки снова улучшают результаты: данные теперь также будут в дисковом кэше, где это не был первый раз.

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

1
ответ дан 14 December 2019 в 01:19
поделиться

Запуск приложения приносит свой исполняемый файл и другие файлы от жесткого диска в дисковый кэш ОС (в RAM). Если это будет выполнено снова скоро впоследствии, то многие из этих файлов, вероятно, все еще будут в кэше. RAM намного быстрее, чем диск.

И конечно один диск может быть быстрее, чем другой.

4
ответ дан 14 December 2019 в 01:19
поделиться

Да. Это назвало Своевременную компиляцию. В основном Ваше приложение развертывается как MSIL (промежуточный язык Microsoft) и в первый раз, когда это выполняется, это преобразовывается в собственный код.

Можно всегда выполнять NGen (см. вышеупомянутую статью), или имейте теплое период в сценариях тестирования производительности, куда это пробегает сценарий пару раз перед фактическим сравнительным тестированием производительности.

3
ответ дан 14 December 2019 в 01:19
поделиться

Кроме того, другие факторы, вероятно, играют роль. Файловая система, кэширующаяся на машине, буферизации недавно используемых данных, и т.д.

Лучше всего запускать несколько тестов (или несколько сотен!) и составляют в среднем через набор, если Вы конкретно не измеряете времена "холодной" начальной загрузки.

1
ответ дан 14 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: