Показать сообщение отдельно
  #16 (permalink)  
Старый 20.08.2013, 01:41
Аватар для zilker
Профессор
Отправить личное сообщение для zilker Посмотреть профиль Найти все сообщения от zilker
 
Регистрация: 30.07.2011
Сообщений: 189

// моя фун-я
function subStr(substring, string) {
	var found = false, k = 1, sbl = substring.length, stl = string.length;
	for(var i = 0; i < stl; i++) {
		if(string.charCodeAt(i) == substring.charCodeAt(0)) {
			for(var j = 1, l = i + 1; j < sbl; j++, l++) if (string.charCodeAt(l)) {
				if(string.charCodeAt(l) == substring.charCodeAt(j)) {
					k++;
				} else {
					k = 1;
					break;
				}
			}
			if(k == sbl) {
				found = true;
				break;
			} else {
				i = l;
			}				
		}
	}
	return found;
}

// фун-я devote
function strpos(substring, string) {
    var index = 0, subindex = 0;
    var subStrLen = substring.length;
    var strLen = string.length;
    while(subindex < subStrLen && index < strLen) {
        if (substring.charCodeAt(subindex) === string.charCodeAt(index)) {
            subindex++;
        } else {
            index -= subindex;
            subindex = 0;
        }
        index++;
    }
    return subindex && subindex === subStrLen;
}


console.time('compare by char codes');
for (var i=0; i<100000; i++) strpos('друг', 'здравствуй, здравствуй, друг мордастый!');
console.timeEnd('compare by char codes');


console.time('compare by char codes2');
for (var j=0; j<100000; j++) subStr('друг', 'здравствуй, здравствуй, друг мордастый!');
console.timeEnd('compare by char codes2');


Хм, но если я применю оптимизацию с charCodeAt в своем коде, он начинает быть быстрее. Я не для пиписькомерства, просто интересно, у меня же вроде вложенный цикл есть
Ответить с цитированием