Показать сообщение отдельно
  #1 (permalink)  
Старый 23.04.2015, 08:20
Интересующийся
Отправить личное сообщение для switch001 Посмотреть профиль Найти все сообщения от switch001
 
Регистрация: 14.04.2010
Сообщений: 29

Помогите с оптимизацией анализатора логов
Добрый день, товарищи!

Решил таки запилить анализатор логов к нашей системе, делал в лоб. Анализатор состоит из двух частей: фронтэнд на JS, бэкэнд на PHP. Бэкэнд простой - десяток строк, читает заданное количество строк с конца файла лога и выдает во фронтэнд построчно в формате JSON. Там его подбирает скрипт, разбивает строки на интересующие части для последующей подсветки синтаксиса и фильтрации. Поясню на картинке:



т.е. строку разбиваем регулярными выражениями на SPANы, каждому - свой стиль. По производительности особых проблем в этом нету, 200 килобайтный блок обрабатывается пару секунд. Но и это не нужно т.к. лог будет загружаться небольшими порциями в 10..100 строк в процессе работы системы.

Проблема в другом. В верхней части видны кнопки, при нажатии на них выключаем или включаем отбражение каких либо SPAN либо строк целиком. Сделано все влоб:
function toggleDate() 
	{
		$('.rgDate').hide();
	}
	
	function toggleError() 
	{
		$('.rgError').toggle('');
	}
		
	function toggleWarning() 
	{
		$('.rgWarning').toggle('');
	}
		
	function toggleNotice() 
	{
		$('.rgNotice').toggle('');
	}
		
	function toggleDebug() 
	{
		$('.rgDebug').toggle('');
	}
		
	function toggleVerbose() 
	{
		$('.rgVerbose').toggle('');
	}


Однако даже на 200К файле выключение, например, поля с датой занимает секунд 30. Процессор причем у меня довольно мощный, 2.5 ггц Coreduo и 6 Гб памяти.

Посоветуйте, пожалуйста, методы оптимизации чтобы хотя бы 1..2 мегабайтный лог работал с приемлемой скоростью. Я думал может стоит хранить строки в массиве, а при выводе переформатировать и фильтровать все что надо. Изменились условия - снова фильтруем и форматируем. Но это как-то не православно чтоли

Последний раз редактировалось switch001, 23.04.2015 в 08:24.
Ответить с цитированием