Пришлось тут на неделе решать проблему одного давным давно разработанного решения. По мере наполнения базы инкрементальный поиск почему-то стал жутко тормозить.
В Mozilla 1.x отрисовка показуемого элемента, насколько я понимаю, происходит стразу после .style.display = 'block'; В результате весь скрипт висит ~секунду, пока всем строчкам проставятся нужные дисплеи, после чего один раз рисуется вся таблица.
Firefox делает "умнее". Что именно он делает, сложно предположить, но судя по всему выполнение JS, присвоение CSS-свойств и отрисовка происходит в параллельных потоках. В результате таблица начинает рисоваться *до* того, как проставятся свойства всем элементам, несмотря на то, что таблица.style.display = 'block'; делается в *самом* конце скрипта. Естественно, что по мере проставления свойств вся таблица перерисовывается заново каждый раз. Все это кино для тех же тысячи элементов работает 15 (!) секунд при полной загрузке процессора.
"Решение" -- поставить показывание таблицы на таймер. Экспериментальным путем установлено, что если показать таблицу через ~4 секунды *после* выполнения скрипта, тормозов не происходит. Это для тысячи элементов. Какой интервал понадобится для двух или трех тысяч -- посчитать невозможно. Отследить завершение непонятно_какого_процесса - тем более.
Пришлось сделать кнопку "поиск" вместо инкремента и попросить клиента пользовать античную Mozilla Suite 1.7 или Оперу (с которой особо ничего не тестировалось). Слава богу, решение интранетовское, пользователей -- меньше десяти. С пабликом я бы застрелился.
Такой вот прогресс и развитие нашего любимого браузера.
Комментарии (37)
Загрузка комментариев...
Похожие записи
-
-
-
-
-
-
-
Как цифровые воры двигают прогресс авторской мысли (ИМХО).
Inquizzo (44) 1312 7 1. октября, 2012.г.3 -
-
Какие термины надо понимать, чтобы следить за прогрессом цивилизации.
Ylarya 1006 1 14. апреля, 2013.г.3
кстати, числа там будут в mac-е те же самые, потому что network bytes order. это я не подумавши спи*дел.
по-моему непереносимыми программы делает именно чрезмерное использование системных ф-ций.
ты ведь забыл про ipv6? и про то, что существует mac, в котором порядок байт другой совсем, правда?
до половины максимального значения число со знаком и без знака выглядит одинаково ) поэтому при том, что максимальное значение -- 255, глюка там из за этого быть не может. отвык я разделять инты на знаковые и беззнаковые, сорри уж, несколько лет пофигистического пхп делают свое )
можно подумать тов. Торвальдс был офигенно готов :D первый блин полюбому комом, главное -- начать. тем более, я не один буду
но замена неправильная. %d это число со знаком. правильно писать %u.
а почему "естественно, я этого никогда не знал"? это неестественно. :)
вот и выяснили, что к написанию ОС ты не готов. :))
http://pastebin.ca/630483
//Проще всего заменить на
printf("%s ", inet_ntoa(a1));
printf("%s\n", inet_ntoa(a2));
//Правильней, конечно, но в конкреном примере незачем
strcpy(s1, inet_ntoa(a1));
strcpy(s2, inet_ntoa(a2));
printf( "%s %s\n", s1, s2);
//А *лучше* по-моему так. Почему - объяснить?
printf("%d.%d.%d.%d %d.%d.%d.%d\n",
(a1.s_addr
вопрос: будет ли работать такая строка в программе:
printf( "%s %s\n", inet_ntoa( a1), inet_ntoa( a2));
дополнительные вопросы: как, почему, и чем можно заменить.
я говорил, что не очень дружу с С , что переводится как "я не писал на нем ни одного серьезного проекта". *что* можно не знать в C я не представляю, это же примитивнейший язык...
про то, что ты не знаешь С ты сам и говорил.
DOS и Windows NT не считаются?
> Линукс как был в Жо, так там и остался.
Чем определяется "жо"? (:
просто он мне нравится. конечно, есть в мире языки в которых то-то сделано лучше, то-то сделано быстрее, там-то вообще пиздец, и вообще все серьезные дядьки... но речь-то не об этом. мне язык нравится, а не интерпретатор. интерпретатор -- говно. в общем-то поэтому мы начинаем писать свой )