Использование анализа XML для такой простой разметки - пустая трата времени. Если вам нужна скорость, используйте indexOf и подстрока - лучший метод.
http://jsperf.com/1f/2
Я отредактировал jsperf @Royi Namir и добавил свою собственную версию (метко названную "screw xml"). Он работает в 2 раза быстрее, чем его оптимизированная версия для разбора XML.
Вот код, который будет соответствовать примеру ОП из вопроса. Переменная «xml» - это просто строка, представляющая XML.
var find = '';
var start = -1;
var end = -1;
var skip1 = 0;
var skip2 = ' avg="'.length;
//
for (i=0;i<lanes.length;i++) {
find = 'num="' + lanes[i] + '"';
skip1 = find.length;
end = -1;
start = xml.indexOf(find, 0);
while (start != -1) {
start = start + skip1 + skip2;
end = xml.indexOf("\"/>", start);
htmlContents += GetLaneInfo(xml.substring(start, end));
start = xml.indexOf(find, end);
}
}
В действительности вы, вероятно, не хотите использовать версию, подобную приведенной выше, потому что она зависит от того, как XML отформатирован равномерно (см .: переменная / константа "skip2"). Но если вы действительно хотите, чтобы производительность / скорость выполнялись таким образом, это самый быстрый вариант.