![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
31416 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 3.5.2006 Репутация: нет Всего: нет |
вообщем есть текстовый фильтр который работает на js
суть в следующем - с сервера подгружается список некоторых объектов (текстовые строки) далле юзер может фильтровать эти строки - вводит некоторый текст и откидываются строки которые НЕ содержат его (текст юзера) как подстроку. все совдится к тому что эта ф-я: var text_filter = function check_filter(text, search) { if(text.toLowerCase().indexOf(search.toLowerCase()) + 1) return true; return false; } вызывается примерно по циклу для пары сотен строк, так вот это очень медленно работает если строк скажем несколько сотен. я так понимаю что скорее всего медленно работает indexOf.. и нужно искать какую то ему альтернативу... подскажите как ускорить? --------------------
Мой блог |
|||
|
||||
Michael.de |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 22.3.2005 Где: Deutschland Репутация: 2 Всего: 9 |
31416, если передавать в ф-цию вместо search уже готовый search.toLowerCase(), то выполнение чуть ускорится (я добавил else):
можно поэкспериментировать и вытащить check_filter() в отдельную ф-цию:
P.S. можно ещё короче... вместо:
![]() P.P.S. единственное, что не понял... что делает между скобок +1: indexOf(search + 1) ? Это сообщение отредактировал(а) Michael.de - 4.11.2008, 19:44 |
||||||||
|
|||||||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Видимо, превращает -1 в 0, а 0 в 1 - для получения однозначного булевского рез-та ![]() Хотя, конечно, и короче, и логичнее было бы написать это как
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
Michael.de |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 22.3.2005 Где: Deutschland Репутация: 2 Всего: 9 |
||||
|
||||
lusever |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 12.4.2007 Репутация: 2 Всего: 3 |
Регулярное выражение тут будет работать быстрее:
Регексп конечно же лучше кэшировать и эскейпить. |
|||
|
||||
IDVsbruck |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
Однозначно регулярка! И проще, и гораздо шустрее ...
|
|||
|
||||
31416 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 3.5.2006 Репутация: нет Всего: нет |
да, спасибо! попробвал регулярку стало более менее, хотя все-равно чувствуется на больших объекмах..
тут советовали еще соединить все строки в одну, и сразу одним применением регулярки отобрать нужные - было бы скорее всего еще быстрее,чем по циклу, но пока и так устраивает) --------------------
Мой блог |
|||
|
||||
IDVsbruck |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
Если объем текста очень приличный, то может быть эффективней отдать это серверу - отдавать ему вводимый пользователем текст и разбирать на серваке, а клиенту возвращать только требуемое.
|
|||
|
||||
mxt |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 6.9.2007 Репутация: нет Всего: 1 |
возможно нужно оптимизировать, но не только тут,
у вас примерно такой план работы: 1. задаются параметры фильтра, 2. Фильтруются строки 3, Вывод отфильтрованных данных пользователю. Возможно нужно проводить оптимизацию в 3 пункте? --------------------
|
|||
|
||||
31416 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 3.5.2006 Репутация: нет Всего: нет |
IDVsbruck, да чего то не хочется сервер такими задачами напрягать..
mxt, а какая там в 3-ем может быть оптимизация? там просто хтмл строится и все --------------------
Мой блог |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |