Я хочу знать, работает ли новый код быстрее или медленнее, чем текущий. Я могу использовать профилировщик для отслеживания как нового кода, так и старого кода, но проще всего сделать это на разных серверах, и даже если бы я мог сделать это на том же сервере, у меня было бы значительное количество других людей, использующих этот сервер. в то же время, что влияет на производительность. Могу ли я сравнить чтения и ЦП, чтобы провести сравнение яблок с яблоками? Или эти значения будут зависеть от основного оборудования? Очевидно, я ничего не могу сделать с информацией о продолжительности. Какие еще столбцы трассировки мне следует посмотреть?
Да, вы можете и должны начать тестирование на отдельной непроизводственной машине (лучше, если с той же конфигурацией аппаратного и программного обеспечения), сначала в контролируемой изолированной тестовой среде, а затем для уточнения результатов вы должны попытаться воспроизвести реальную производственную среду ( загруженность, аппаратные средства, доступы). Но последнее слово (когда вы достаточно уверены, что ваш новый код работает так, как ожидалось, а производительность разумно лучше), вы ДОЛЖНЫ проверить на рабочем сервере (возможно, перенаправляя только трафик некоторый, если у вас есть балансировщик нагрузки). Через несколько дней вы можете сравнить живые результаты «старого» и «нового».
И последнее об оптимизации. Часто вам нужно найти компромисс: лучший средний ответ, лучший ответ в худшем (но не частом) случае, лучший ответ в лучшем случае (если достаточно часто) и так далее (или, скорее всего, баланс между ними всеми). На все эти меры влияют модели использования аппаратного / программного обеспечения / использования. Воспроизвести их в тестовой среде - непростая задача (не стоит недооценивать это).
Конечно, вы можете сравнивать на другом сервере, НО ваши результаты МОГУТ быть менее точными (или даже совершенно несопоставимыми). Код не является изолированной сущностью: он выполняется на определенном сервере (с определенной конфигурацией sw & hw) и используется определенным образом. Один и тот же код, вызываемый в изолированной тестовой среде и в производственной среде с более чем 1 млн одновременных пользователей, может вести себя совершенно по-разному. Параллелизм также влияет не только на код ваш, но также на HW (доступ к диску и всем другим совместно используемым ресурсам) и, возможно, на sw.