Показать сообщение отдельно
  #18 (permalink)  
Старый 20.08.2013, 11:17
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Хотите оптимизации, ну тогда вот ловите.. Думаю ни для кого не секрет что вычитание работает в разы быстрее сложения.
function strpos(substring, string) {
    var substringStartPos = substring.length - 1;
    var subindex = substringStartPos;
    var index = string.length - 1;
    for( ;subindex >= 0 && index >= 0; ) {
        if (substring.charCodeAt(subindex) === string.charCodeAt(index)) {
            subindex--;
        } else if (subindex !== substringStartPos) {
            index += substringStartPos - subindex;
            subindex = substringStartPos;
        }
        index--;
    }
    return substringStartPos && subindex === -1;
}

console.time('compare by char codes');
for (var i=0; i<100000; i++) strpos('друг', 'здравствуй, здравствуй, друг мордастый!');
console.timeEnd('compare by char codes');
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием