Есть ли разница в эффективности при использовании нативного метода, такого как .join (), вместо того, чтобы писать логику? - PullRequest
0 голосов
/ 20 мая 2019

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

Ответы [ 2 ]

2 голосов
/ 20 мая 2019

Существует (как минимум) три существенных преимущества использования встроенной функции вместо ее самостоятельной реализации:

(1) Скорость - встроенные функции обычно вызывают код более низкого уровня, предоставляемый browser (не в Javascript), и указанный код часто выполняется значительно быстрее, чем тот же код в Javascript.Полифилы работают медленнее, чем собственный код.

(2) Удобочитаемость - если другой читатель вашего кода увидит ['foo', 'bar'].join(' '), он немедленно узнает, что он делает, и как joinметод работает.С другой стороны, если они увидят что-то вроде doJoin(['foo', 'bar'], ' '), где doJoin - ваша собственная реализация того же метода, им придется искать метод doJoin, чтобы быть уверенным в том, что там происходит.

(3) Точность - что если вы допустили ошибку при написании своей реализации, но ошибка не сразу очевидна?Это может быть проблемой.Напротив, встроенные методы почти никогда не имеют ошибок (и, когда их обнаруживают, обычно исправляются).

Можно также утверждать, что нет смысла тратить усилия на решенную проблему.

1 голос
/ 20 мая 2019

Да, в некоторых случаях разница в эффективности.В документации есть несколько примеров для библиотеки fast.js .Подводя итог, что они говорят, вам не нужно обрабатывать все случаи, изложенные в спецификации, поэтому иногда вы можете делать некоторые вещи быстрее, чем встроенные реализации.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...