Стратегии оптимизации производительности последней инстанции

Предложения:

  • Предварительное вычисление, а не повторное вычисление: любые циклы или повторяющиеся вызовы, содержащие вычисления с относительно ограниченным диапазоном входных данных, рассмотрите возможность поиска (в массиве или словаре), который содержит результат этот расчет для всех значений в допустимом диапазоне входных данных. Затем используйте вместо этого простой поиск внутри алгоритма.
    Недостатки: если на самом деле используется мало предварительно вычисленных значений, это может усугубить ситуацию, а также поиск может занять много памяти.
  • Не используйте библиотечные методы: большинство библиотек должны быть написаны для правильной работы в широком диапазоне сценариев, а также для выполнения нулевых проверок параметров и т. д. Повторно реализовав метод, вы можете уметь исключить много логики, которая не применима в конкретных обстоятельствах, в которых вы ее используете.
    Минусы: написание дополнительного кода означает большую поверхность для ошибок.
  • Использовать библиотечные методы: чтобы противоречить самому себе, языковые библиотеки пишут люди, которые намного умнее вас или меня; скорее всего, они сделали это лучше и быстрее. Не реализовывайте это самостоятельно, если вы не можете сделать это быстрее (т. Е. Всегда измерять!)
  • Обман: в некоторых случаях, хотя для вашей проблемы может существовать точный расчет, вам может не понадобиться «точное», иногда приближение может быть «достаточно хорошим» и намного быстрее в сделке. Спросите себя, действительно ли имеет значение, если ответ отклоняется на 1%? 5%? даже 10%?
    Недостатки: ну ... ответ не будет точным.

optimize

performance

optimization

language-agnostic

2022-09-07T08:11:26+00:00
Вопросы с похожей тематикой, как у вопроса:

Стратегии оптимизации производительности последней инстанции