Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 12.12.2011, 21:20
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 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 (permalink)  
Старый 12.12.2011, 21:43
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

128
25
33
522

Linux.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #13 (permalink)  
Старый 12.12.2011, 22:03
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

57
14
65
203

Linux)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #14 (permalink)  
Старый 12.12.2011, 22:59
Аватар для Livanderiaamarum
Профессор
Отправить личное сообщение для Livanderiaamarum Посмотреть профиль Найти все сообщения от Livanderiaamarum
 
Регистрация: 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
Ответить с цитированием
  #15 (permalink)  
Старый 12.12.2011, 23:23
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

trikadin,
У меня нетбук
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #16 (permalink)  
Старый 12.12.2011, 23:31
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от Nekromancer
У меня нетбук
Так без претензий же) Это было просто для статистики.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #17 (permalink)  
Старый 12.12.2011, 23:49
Аватар для Livanderiaamarum
Профессор
Отправить личное сообщение для Livanderiaamarum Посмотреть профиль Найти все сообщения от Livanderiaamarum
 
Регистрация: 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, странно это как то О_О может для справедливость их нужно в разное время запускать? удивительные резльтаты))
Ответить с цитированием
  #18 (permalink)  
Старый 12.12.2011, 23:50
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

bullshit

лучший вариант, по-моему мнению, от nerv_ (ф-я)

Livanderiaamarum, для тестировнаия скоростей есть замечательный сайт http://jsperf.com.
предлагаю его обкатать

Последний раз редактировалось melky, 12.12.2011 в 23:52.
Ответить с цитированием
  #19 (permalink)  
Старый 13.12.2011, 00:27
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

пи**ками еще померьтесь
Ответить с цитированием
  #20 (permalink)  
Старый 13.12.2011, 00:29
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от devote
пи**ками
Хера себе ты вежливый.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вытащить число из ссылки Artem_k89 Opera, Safari и др. 8 07.01.2011 21:46
overflow:auto и #-ссылки vania-pooh (X)HTML/CSS 3 02.01.2011 21:16
Разбить число на миссив, как ? Bogdan808 Общие вопросы Javascript 20 01.09.2010 18:19
Срабатывание ссылки на изображении, если курсор не движется. mixlink Javascript под браузер 0 16.07.2010 15:56
ссылки получали стиль "visited" только на время сессии alexandr_poskrobka Серверные языки и технологии 7 10.03.2010 08:48