Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   помогите соптимизировать алгоритм для V8 (https://javascript.ru/forum/misc/49366-pomogite-soptimizirovat-algoritm-dlya-v8.html)

newobject 10.08.2014 15:56

ixth,
Так поменьше, но все равно тормозит. Думаю, на моих строках сильней оригинала будет тормозить.
У меня есть тут одна мысля. Надо как то сделать, чтобы поиск начиналсмя с таймаутом, а в этом таймауте проверялось не изменился ли за это время инпут. Думаю, надо в этом направлении копать. Потом отпишусь. Пока не делай ничо, а то мне жалко твоего времени:), если не получится, тогда будем продолжать:)

ixth 10.08.2014 16:22

Ты не поверишь… Мой вариант почти так и делает. Он ждет, когда пользователь закончит ввод и только тогда запускает поиск. Плюс, тебе же не критично, что поиск ведется регуляркой? Можно заменить его на indexOf: http://jsfiddle.net/ainop/g41x6tto/4/

Больше никаких оптимизаций сделать, наверное, нельзя. Я бы перенес все это на сторону сервера и делал запросы через ajax.

newobject 10.08.2014 17:26

ixth,
Я изменил search вот так
search=function(the_value){
   var test=function(){return input.value==the_value}
   var out=[]
   var re=new RegExp(the_value, "i")
   for(var i=0; i<base.length; i++){
      if(!test()) break;
      if(base[i].match(re)) {
      base[i]=base[i].replace(/((\d{4} \d{2}-\d{3})|(\d{4} \d{2}-\d{3} \d{1}-\d{2}-\d{2}))$/, "<b>$1</b>")
      out.push(base[i])
   }
 }
return out
}

И один хрен тормозит. Во всех остальных браузерах летает. Может это просто V8 кривой? Или я фигню написал?

MallSerg 10.08.2014 17:32

А если данных будет в 100 раз больше?
не возникает ощущение что задачу решаете не совсем правильно?

newobject 10.08.2014 17:38

MallSerg,
Я бы с удовольствием выслушал ваши предложения.

MallSerg 10.08.2014 18:51

Задача не озвучена полностью тут только весьма странная часть решения неизвестной задачи ((.
Возможно стоит задача поиска совпадений в текстовых строках.

Со стороны задача выглядит как забивание саморезов в бетонную стену с помощью булки хлеба. ))

newobject 10.08.2014 18:59

MallSerg,
Задача - банальный поиск выборки по массиву с последующим выводом результата.

MallSerg 11.08.2014 01:38

Цитата:

Сообщение от newobject
банальный поиск выборки

Как эти слова вообще могли оказаться рядом?
как вообще могло прийти в голову выводить результат из 900 строк на каждое нажатие клавиши?

На ладно давай допустим что есть люди читающие по 500 - 600 строк в секунду зачем использовать регулярные выражения для простого поиска чем не устраивает valueOF ?
Почему функция называется поиск а на самом деле она генерит HTML ?

Цитата:

Сообщение от newobject
остальных браузерах летает

остальные браузеры разумно игнорируют код постоянно перестраивающий дом перерисовывающий страницу с такой частотой пользователь его все равно не сможет увидеть

newobject 11.08.2014 01:55

MallSerg,
Вы господин, какую то феерическую ахинею несете. Или вникни в код наконец, или расслабься и отдохни.

ixth 11.08.2014 09:46

Цитата:

Сообщение от MallSerg (Сообщение 325268)
остальные браузеры разумно игнорируют код постоянно перестраивающий дом перерисовывающий страницу с такой частотой пользователь его все равно не сможет увидеть

Все интересно и весело. См. продолжение срача тут: http://javascript.ru/forum/misc/4937...uet-opera.html


Часовой пояс GMT +3, время: 19:43.