Показать сообщение отдельно
  #23 (permalink)  
Старый 21.08.2011, 11:29
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Кстати, я сделал ещё одну группировку, на этот раз полную. Долго думал на чём делать - на PHP или на JavaScript, в итоге выбрал последнее. На PHP конечно вышло бы проще и быстрее в плане отладки, но... там потом было бы заморочно интегрировать это дело, разбираться со строкой запроса в трекере, продумывать как осуществить отключение левого флажка группировки смежных сессий... Иначе при первом нажатии ничего не произойдёт, а при втором функция попытается заведомо сгруппированную разметку разгруппировать, и выйдет... ну ничего страшного не выйдет, но общей хронологии не будет после такого действия. В отличие от штатного режима группировки подряд идущих сессий с одного IP, оно совершенно обратимо, и после разгруппировки общая хронология сохраняется... Ведь она в сущности и не нарушалась (в отличие от того, что я сделал сейчас).

Выкрутился так: обработка через JavaScript по аналогии с первой функцией, и оба флажка блокируются до загрузки нового блока данных (по нажатию на третий флажок), однако поскольку тут вычислительная сложность куда больше, то браузер на небольшое время всё-таки виснет. Mozilla Firefox выполняет операцию примерно за 3/4 секунды с небольшим, IE - за 2 секунды. Для сравнения - простая группировка в Firefox происходит почти мгновенно (около 1/4 секунды), в IE - за 1 секунду с небольшим (замерял только что). Но Опера всех превзошла, я просто в ауте. Она ОБЕ группировки моментально делает, за доли секунды. КАК им это удалось?
В принципе для анализатора логов лёгкие тормоза не критичны... Однако мне всё-таки жутко интересно, как ВКонтакте делают такой быстрый код (да и не только они, взять хоть формочку редактирования сообщения, в которую я сейчас пишу, она вообще вылетает мгновенно практически по нажатию на кнопку)

Последний раз редактировалось popov654, 21.08.2011 в 11:45.
Ответить с цитированием