Синтаксическое улучшение производительности

При программировании мы сталкиваемся с различными проблемами. И есть так много решений тоже. Среди них мы выбираем лучшее решение производительности. Критерии производительности могут быть изменены из-за ограничений и сред, нехватки памяти или пула ЦП. Итак, мы исследуем временную сложность и пространственную сложность алгоритма. Обычно мы принимаем лучший алгоритм временной сложности. После того, как мы примем алгоритм наилучшей временной сложности, можем ли мы еще улучшить производительность?

Другой процесс, тот же результат

В предыдущей статье я сравнил крошечную разницу в производительности между быстрой сортировкой и сортировкой в ​​куче. Он имеет разницу в производительности, которая не влияет на временную сложность из-за операций SWAP. Результат сортировки тот же, но есть разница в производительности. На самом деле, когда у нас есть лучшее решение временной сложности, мы больше не оптимизируем. Однако его также можно оптимизировать для факторов, влияющих на очень небольшую производительность. Другими словами, если подход к решению проблем принципиально одинаков, он использует другой синтаксис или использует другие реализации для повышения производительности.

Например, давайте посмотрим на пол с плавающей запятой. Существуют различные методы для пола с плавающей запятой в javascript. Используйте объект Math или вызовите функцию parseInt или используйте логические операции.

Math.floor(7/2)  // 3
parseInt(7/2)    // 3
7/2 | 0          // 3
~~(7/2)          // 3

Все четыре метода одинаковы, но процесс отличается. В чем разница между этими четырьмя методами? Я тестирую на jsperf.com, чтобы увидеть разницу в производительности

Высокий уровень операций в секунду означает быстрый код. Math.floor функция самая быстрая. Но не имеет значительного разрыва по сравнению с tildes и or.

Это действительно влияет на производительность?

Пример нижнего предела с плавающей запятой имеет относительно большие различия в производительности. parseInt и Math.floor отличаются более чем в 10 раз. Но есть так много случаев, которые имеют крошечные различия

Сравнение с итераторами не имеет больших отличий. Но по сравнению с ними, они обречены быть быстрыми и медленными. Это крошечные различия и производительность. Это означает, что если сильно сократить производительность, изменив синтаксис, можем ли мы хотя бы немного повысить производительность? И действительно ли мы должны это делать? На мой взгляд, это от случая к случаю.

Не нужно рассматривать

Не нужно учитывать маленькую производительность практически в любых условиях. Аппаратные характеристики лучше, чем раньше. Так что не нужно этих усилий. И почти на производительность внешнего интерфейса влияет поведение пользовательского интерфейса, вызывающее рендеринг. Как могут вызываться функции reflow и repaint. Анимация тоже не при чем. когдаrequestAnimationFrame вызывается повторно, вызываемые функции достаточно легкие, чтобы поддерживать 60 кадров в секунду. И спецификации оборудования также достаточно, чтобы помочь. Если вы измените код синтаксически, чтобы немного повысить производительность, читабельность вашего кода может ухудшиться. Вы можете потерять большие вещи, беспокоясь о мелкой производительности.

Необходимо рассмотреть

Javascript больше не только для клиента. Его можно использовать для обработки больших данных и ответов на огромные запросы от клиентов на сервере. Это может быть серверный язык. Следовательно, необходимо поднять производительность до предела, чтобы сделать хороший продукт как для сервера, так и для клиента. Кроме того, javascript можно запускать на оборудовании с плохими характеристиками, которое не похоже на ПК и смартфон. В системе с низкими характеристиками для обеспечения хорошей производительности не только оптимизируйте работы рендеринга, но и оптимизируйте коды. Если когда-либо сделать немного более высокую производительность, она может почувствовать большую разницу в среде низкого уровня, чем в среде высокого класса.

На мой взгляд…

На мой взгляд, я согласен, не нужно рассматривать как 7 против 3. Почти люди не считают маленькую производительность, кроме тех, у кого есть одержимость производительностью. На самом деле, если учесть улучшение синтаксической производительности, это может привести к потере читабельности кода. Я думаю, это большая потеря. Но есть немного жадности. Потому что все хотят выжать производительность.