Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Быстрота исполнения


Автор: zenuch 12.2.2008, 17:04
есть строчка 
Код

var str = 'organize_photo_1536';


какой из вариантов будет быстрее и эффективнее работать (с вашими рассуждениями если можно) (и если можно еще ссылочку на алгоритмы split, replace)

Код

var id = str.split('_').pop();
var id = str.replace('organize_photo_', '');

Автор: Sardar 12.2.2008, 19:19
Думаю str.substr(str.lastIndexOf('_') + 1);
Ссылок на алгоритмы не найдёшь, у каждого браузера и почти у каждой системы где используется ECMAScript - свой (иногда очень кривой) интерпретатор. Есть только спецификация от ECMA, естественно там ни слова о эффективности.

Автор: zenuch 13.2.2008, 00:38
Спасибо за вариант, видимо придется тестить, завтра постараюсь выложить результаты.

Автор: zenuch 13.2.2008, 12:36
Итак тестировались три строчки  в Windows XP SP2

FF - Gecko/20080201 Firefox/2.0.0.12
IE - 6.0.2900.2180
Opera - 9.00(8501)
Safari - 3.0.4(523.15)

Код

[1] - var id = str.split('_').pop();
[2] - var id = str.replace('organize_photo_', '');
[3] - var id = str.substr(str.lastIndexOf('_') + 1);


вот что выдают браузеры на 100 тысячах итераций (время среднее арифметическое в микросекундах):
  • FF            [1] - 2031   [2] - 828   [3] - 437
  • IE            [1] - 1516    [2] - 437   [3] - 609
  • Opera     [1] - 610      [2] - 1672   [3] - 453
  • Safari      [1] - 422      [2] - 219   [3] - 343

Однозначного ответа нет, как видно из данных, но в большинстве своем выигрывает третий вариант. Sardar в своем предположении оказался прав.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)