Чтобы продемонстрировать, насколько вырос весь JavaScript, Fast.js повторно реализует ряд встроенных нативных функций в JavaScript. Угадайте что — они быстрее!
Раньше существовало основное правило, согласно которому встроенные функции в таком языке, как JavaScript, всегда работают намного быстрее, чем эквивалентный код, выраженный на необработанном языке. Причина была довольно очевидной — встроенные функции были закодированы в машинном коде, каким бы он ни был, и вы сравнивали скомпилированный и интерпретированный. Однако со временем, благодаря передовым JIT-компиляторам и методам оптимизации, JavaScript стал быстрее. Настолько быстро, что кажется, что надежное правило больше не применяется, или нет?
Fast.js — это библиотека с открытым исходным кодом, которая предоставляет реализации .foreach, .map, .reduce, concat, bind, apply, filter, indexOf и LastIndexOf. Он также реализует две стандартные служебные функции — частичную и клонированную, которые не встроены — в быстром стиле и предоставляет альтернативу для попытки в качестве быстрой функции.
Некоторые функции являются просто более быстрыми версиями, но некоторые делают упрощающие предположения, чтобы обеспечить еще большую скорость. Например, встроенные функции map, reduce и foreach должны учитывать вероятность того, что массив, с которым они используются, является разреженным. Пример, приведенный в документации:
var arr = новый массив (100); // разреженный массив со 100 слотами
arr [20] = ‘Привет, мир’;
function logIt (item) {
console.log (элемент);
}
arr.forEach (logIt);
В этом случае в массиве используется только один элемент, а встроенная функция forEach вызывает logIt только один раз. Быстрая альтернатива предполагает, что все массивы полностью используются, то есть не являются разреженными, и позволяет избежать тестирования, которое должна выполнять встроенная функция. Например:
var fast = require (‘fast.js’);
var arr = [1,2,3,4,5];
fast.forEach (arr, logIt); // быстрее, чем arr.forEach (logIt
Вознаграждение за отказ от обработки разреженных массивов состоит в том, что быстрая функция работает до пяти раз быстрее.