Я не могу ответить вам относительно качества кода. Другие могут. Но когда вам «нужно повысить производительность», я скорее скажу вам, как это сделать, чем расскажу, какие инструменты использовать.
Есть инструменты, но важнее, чем инструменты, понимание того, что вы делаете.
Самое главное - понять, что измерение не говорит вам, что нужно исправить, чтобы получить более высокую производительность; это только говорит о том, сколько улучшений вы получили.
Способ повышения производительности - найти действий, какими бы они ни были, которые составляют значительную долю времени и могут быть улучшены .
Измерение не найти.
Пример:
Я могу вручную несколько раз просмотреть состояние программы и видеть его большую часть времени, выполняя манипуляции с классами контейнеров, такие как выборка элементов, тестирование на конечные условия и т. Д.
(Это находка часть.)
Это может происходить во многих местах кода, поэтому, похоже, что никакая конкретная процедура не приводит к потере значительной части времени.
Здесь нет особой точки доступа или явного узкого места.
Не существует «плохого алгоритма» или «медленной рутины», о которых люди говорят, что ищут.
Тем не менее, в этих нескольких примерах я вижу, что он выполняет операции с классами контейнеров, и я точно вижу, где.
Если я могу заменить эти операции класса контейнера чем-то другим, выполняющим ту же цель, я могу сэкономить время.
Сколько времени? Примерно в течение доли времени я видел, как происходили эти операции, и это может быть довольно большим.
Реальная отдача от этого заключается в том, что может быть несколько проблем.
Предположим, проблема A стоит 40% времени, B стоит 20%, а C стоит 10%,
и общее время, скажем, 10 секунд.
Вы идете за А, самый очевидный.
Исправление сокращает время до 6 секунд. (Ускорение 10/6 = 1,67).
Тогда проблема B занимает больший процент времени (2/6 = .33), поэтому ее легче найти по выборкам.
Исправление сокращает время до 4 секунд (ускорение 6/4 = 1,5)
Тогда C равно (1/4 = 25%), и его гораздо легче найти, чем раньше.
Его удаление сокращает время до 3 секунд (ускорение 4/3 = 1,33).
Общий коэффициент ускорения составляет 10/3 = 3,33.
Вы можете посмотреть на это как на составное произведение каждого ускорения: 10/6 * 6/4 * 4/3 = 10/3.
Теперь я имею в виду числа здесь, но ни одно из них не должно было быть измерением времени, проведенного в локализованных частях кода.
Они были просто приблизительными оценками, полученными при описании того, что происходило в небольшом количестве подробных примеров того, что делала программа.
Образцы не имеют отношения к измерению.
Они обеспокоены разоблачением проблем.