Скорость: аргумент-строка vs аргумент-объект со строкой
В общем, дело касатется HTML-парсера.
Каждый тэг представляется как токен:
function Token(name, attributes) {
/** @member {String} */
this.name = name;
/** @member {Array} */
this.attributes = attributes;
}
Каждый токен отправляется на обработку в функцию. Сейчас это сделано так:
/**
* @param {String} name
* @param {Array} attributes
*/
function processStartTag(name, attributes) {}
processStartTag(token.name, token.attributes);
Вопрос: насколько эффективней будет отрефакторить код так:
/**
* @param {Token} token
*/
function processStartTag(token) {}
processStartTag(token);
Ведь по идее в первом варианте строка постоянно копируется. В случае с объектом будет просто передаваться ссылка на объект. |
Блин, че то я сам не додумался потестить :)
Действительно, разница неощутимая между моими вариантами. Значит будем искать другие места для оптимизации ) Дзен-трансгуманист, если есть время+желание, глянь пожалуйста своим зорким взгядом https://github.com/aredridel/html5/tree/dev/lib (TreeBuilder и Tokenizer). Хотя наверно непосвященному будет трудно сориентироваться в такой груде кода. Первая цель - 100% соответствие спецификации HTML5 - достигнута. Щас вот занимаюсь оптимизацией. Ибо по сравнению с дефолтным парсером jsdom либы этот парсер проигрывает эдак раза в четыре. Понятно, что он будет проигрывать при любых обстоятельствах, но уверен, что разницу можно сократить. |
Цитата:
|
| Часовой пояс GMT +3, время: 06:50. |