Добрый день, товарищи!
Решил таки запилить анализатор логов к нашей системе, делал в лоб. Анализатор состоит из двух частей: фронтэнд на 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 мегабайтный лог работал с приемлемой скоростью. Я думал может стоит хранить строки в массиве, а при выводе переформатировать и фильтровать все что надо. Изменились условия  - снова фильтруем и форматируем. Но это как-то не православно чтоли 
