12.12.2011, 21:20
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от Livanderiaamarum
|
но мой метод быстрее
|
С чего Вы взяли? Встроенные функции работают достаточно быстро, и хоть первый раз мой алгоритм был не вполне адекватен, он быстрее Вашего, по крайней мере в IE) Но в FF медленнее ^_^
p.s.: IE неадекватен. Разница с FF во времени исполнения ппц.
/**********************************************************/
var timer = (new Date()).getTime();
for(var i = 0; i < 100000; i++) {
var x = "http://site.ru/load/38-1-0-138".split("-").pop();
}
alert((new Date()).getTime() - timer); // IE - 1109, FF - 75
/**********************************************************/
var timer = (new Date()).getTime();
for(var i = 0; i < 100000; i++) {
var x = "http://site.ru/load/38-1-0-138";
x = x.substring(x.lastIndexOf("-") + 1);
}
alert((new Date()).getTime() - timer); // IE - 375, FF - 11
/**********************************************************/
function lastNumber() {
var _url = "http://site.ru/load/38-1-0-138";
var _word = "-";
var start;
for(var i=_url.length-1; i >= 0; i--){
if(_url.charAt(i) == _word){
start = i;
break;
}
}
return _word = _url.slice(start+1);
}
//.........
var timer = (new Date()).getTime();
for(var i = 0; i < 100000; i++) {
lastNumber();
}
alert((new Date()).getTime() - timer); // IE - 1281, FF - 20
/**********************************************************/
var timer = (new Date()).getTime();
for(var i = 0; i < 100000; i++) {
var sa = 'http://site.ru/load/38-1-0-138'.match(/\d+$/)[0];
}
alert((new Date()).getTime() - timer); // IE - 1219, FF - 249
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Последний раз редактировалось nerv_, 12.12.2011 в 21:56.
|
|
12.12.2011, 21:43
|
|
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
128
25
33
522
Linux.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|
12.12.2011, 22:03
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
57
14
65
203
Linux)
|
|
12.12.2011, 22:59
|
|
Профессор
|
|
Регистрация: 10.12.2011
Сообщений: 290
|
|
С чего Вы взяли? Встроенные функции работают достаточно быстро, и хоть первый раз мой алгоритм был не вполне адекватен, он быстрее Вашего, по крайней мере в IE) Но в FF медленнее ^_^
function lastNumber(_url, _word){
_word?_word=_word:_word = '-'
var start //индекс вхождения
for(var i=_url.length-1; i >= 0; i--){
if(_url[i] == _word){
start = i
break
}
}
return parseInt(_url.slice(start+1),10)
}
function qq(){
var start = new Date().getTime();
for(var i=0; i < 100000; i++){
//lastNumber("http://site.ru/load/38-1-0-138")
//parseInt("http://site.ru/load/38-1-0-138".split("-").pop(),10)
}
log(new Date().getTime() - start)
}
qq()
раскомментируйте по очереди строчки, мою и вашу) в моей 50 , в вашей 150
|
|
12.12.2011, 23:23
|
|
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
trikadin,
У меня нетбук
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|
12.12.2011, 23:31
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от Nekromancer
|
У меня нетбук
|
Так без претензий же) Это было просто для статистики.
|
|
12.12.2011, 23:49
|
|
Профессор
|
|
Регистрация: 10.12.2011
Сообщений: 290
|
|
Сообщение от melky
|
//http://site.ru/load/38-1-0-138
function lastNumber(_url, _word){
_word?_word=_word:_word = '-'
var start
for(var i=_url.length-1; i >= 0; i--){
if(_url[i] == _word){
start = i
break
}
}
return parseInt(_url.slice(start+1),10);
}
function lastNum2(str){
return (str=str.split())[str.length-1];
};
function lastNumber3 (str){
return str.substring(str.lastIndexOf("-") + 1);
};
function lastNumber4(_url) {
var _word = "-";
var start;
for(var i=_url.length-1; i >= 0; i--){
if(_url.charAt(i) == _word){
start = i;
break;
}
}
return _word = _url.slice(start+1);
}
var started;
var res = [];
var count = 1000000;
var i = 0;
var str = "http://site.ru/load/38-1-0-138";
started = Date.now();
for(i=0;i<count;i+=1) lastNumber(str, "-");
res.push( Date.now() - started );
started = Date.now();
for(i=0;i<count;i+=1) lastNum2(str);
res.push( Date.now() - started );
started = Date.now();
for(i=0;i<count;i+=1) lastNumber3(str);
res.push( Date.now() - started );
started = Date.now();
for(i=0;i<count;i+=1) lastNumber4(str);
res.push( Date.now() - started );
alert(res)
моя ф-я чуть медленней lastNumber3 в FF и намного быстрее её в chromium
|
ого, а моя у меня выдает 50, а другого парня 160-200, странно это как то О_О может для справедливость их нужно в разное время запускать? удивительные резльтаты))
|
|
12.12.2011, 23:50
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
bullshit
лучший вариант, по-моему мнению, от nerv_ (ф-я)
Livanderiaamarum, для тестировнаия скоростей есть замечательный сайт http://jsperf.com.
предлагаю его обкатать
Последний раз редактировалось melky, 12.12.2011 в 23:52.
|
|
13.12.2011, 00:27
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
пи**ками еще померьтесь
|
|
13.12.2011, 00:29
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от devote
|
пи**ками
|
Хера себе ты вежливый.
|
|
|
|