| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Обсуждение форума > Быстрая подсветка готова |
| Автор: Sardar 7.8.2004, 03:04 |
| Пару дней назад переписывался с neutrino о подсветке, я тогда сидел за плотной теорией. Вдруг все заспешили модернизировать форум, ну и я решил побыстрому написать Это подсветка Java, по идее очень быстрая, 4кб кода за 63мс ИЕ, 120мс Мозилла, Опера - на моей машине. Весит мало <=10кб, но мало расшаренного кода, так что для каждого языка придется тащить 8-10кб таблиц. Задача повставлять Java код и увидеть Internal error... или "Сообщите модератору..." красными буквами. Все найденные баги постить сюда. Стили были предуманны в полном бреду в 2:00 ночи, Cheba сделает крассивые. Кто хочет открывает сорцы и пишет свои стили. Сейчас в подсветке основные ключевые слова, стандартные обьекты и т.п. можно в любой момент добавить. Тестим: http://files.vingrad.ru/Sardar/JavaParserR.htm Тестовые страницы: http://polygon.septima.com.ua/highlight/test_page.htm - вставляем код, жмем кнопку. Страница форума: http://files.vingrad.ru/Sardar/highlighter/index.php.htm - просто смотрим и постим сюда результаты. |
| Автор: Wowa 7.8.2004, 05:12 |
| Работает, действительно, очень быстро. |
| Автор: sergejzr 7.8.2004, 11:06 | ||||
| Теперь надо было бы проверить в "реальных" условиях ----------------------------------------------------
http://forum.vingrad.ru/index.php?act=ST&f=9&t=27306&hl=&view=findpost&p=193915 --------------------------------------------------------------------------------- Извиняюсь! Там и нечему подсвечиваться Вот на это ушло 2 секунды на ИЕ и 1 секунда на Мозилле.
Если в коде присутствуют ошибки (я для теста попробовал вставить вместо ява-кода яваскрипт), то время достигает 13 секунд на подсветку кода аналогичной длинны ... Если хочешь, можно сделать что нибудь вроде http://www.iwi-iuk.org:8081/cgi-bin/vingrad/test2.php3?oldurl=http://forum.vingrad.ru/index.php для тестов Для этого необходимо, чтобы твой код разбирался с форматом ХТМЛ (о чём мы уже говорили). Стили очень понравились |
| Автор: Sardar 7.8.2004, 12:34 |
| Нашел причину тормознутости ИЕ: у него медленные массивы. Решу использованием строк. Левый код может быть медленным - тратиться много не нужных переходов, можно ускорить, но тогда таблицы будут гораздо больше. Под вечер перепишу код, вся подсветка стент быстрее. Заметте что она находит не закрытые коментарии и строки и предупреждает об этом sergej.zp подсветка работает с HTML кодом, правда решил предварительным приведением к тексту, иначе разраслись бы таблицы переходов. У меня твой код подсветился: ИЕ:203мс, Мозилла:297мс |
| Автор: p0s0l 7.8.2004, 12:48 |
| В опере код sergej.z - за 1,5 с |
| Автор: Wowa 7.8.2004, 13:22 |
| IE: 1,41s |
| Автор: Cheba 7.8.2004, 14:16 |
| У меня в Мозилле код от sergej.z подсвечивается за 150-250 мс. 9КБ исходника - примерно 1,200 мс. Да и то из-за его кривости. Добавлено @ 14:21 Sardar, у тебя слова, которые должны быть keywords не подсвечивабтся почему-то. Я работаю с тем скриптом, который ты мне прислал. |
| Автор: Sardar 7.8.2004, 14:39 |
| Переписал код, теперь юзаю строки а не массивы как таблицы. Мысль была что строка это массив char, а не хешь таблица. Задумка удалась, увеличение скорости в два раза, за то Мозилла присела - падение скорости в 2 раза Cheba возьми скрипт отсюда. Всем кто тестирует: кидайте всякий мусор, надо получить Internal error, если ошибки не будет, то подсветка готова. Тестируем с массивами(медленная в ИЕ): http://files.vingrad.ru/Sardar/JavaParserR.htm Тестируем с строками(медленная в Мозилле): http://files.vingrad.ru/Sardar/JavaParserR2.htm |
| Автор: Wowa 7.8.2004, 14:46 |
| У меня скорость в ИЕ осталась почти прежней. |
| Автор: Cheba 7.8.2004, 16:09 |
| Так. Я сделал три стиля для Явы. Прикрутил селектор стилля. Все это и много другое Для тех, у кого скорость не сильно большая: Не нужно перезагружать страницу после выбора стиля. Немножко подождит и все будет пучком. |
| Автор: Sardar 7.8.2004, 16:21 |
| Cheba классно сделанно, мне понравился Mello. Зря ты назвал файлы -ie и -moz народ может не понять |
| Автор: Cheba 7.8.2004, 16:31 | ||
Это и подразумевалось. Просто нужно было их как-то различать. Еслибы скрипт умел еще и имена функций выделять, то было бы вообще красиво. |
| Автор: Wowa 7.8.2004, 16:47 |
| Теперь надо выяснить какую подстветку внедрять в форум. У нас есть 2 практически законченные подстветки. |
| Автор: Sardar 7.8.2004, 17:18 | ||||
Непроблема, сейчас сделаю. Всем у кого есть пожелания на счет подсветки конкретного языка: сразу договариватесь что нужно
Мне кажется эта самая быстрая и возможно самая навороченная(с теоретической точки зрения еще и самая правильная |
| Автор: Wowa 7.8.2004, 19:11 | ||
Интересно ее бы потестить не на отдельной странице, а на странице с форумом и сообщениями. |
| Автор: sergejzr 7.8.2004, 19:22 | ||
Ну ладно.. Sardar молодец. Я всегда это говорил Надо хоть чего нибудь поставить, а то я жду не дождусь, когда этому конец придёт А то уменя уже следующая идея появилась... Кто знает UltraEdit, тот поймёт. Там очень сложная подсветка очень легко расширяется/меняется/добавляются языки. Если скачаете, то попробуйте PHP подсветить .... красота! Так вот, я нашёл его движок. Теоретически надо только переписать на Яваскрипт и перескочить ХТМЛ. По своему опыту могу выделить плюспункты этого решения в порядке релевантности:
Вообще то надо бы всё-таки объективно оценить на тему лёгкости расширения, гибкости итд. Всё таки скорость оказывается не так важна, так как кода на мегабайты на форуме нет Кстати мой вариант расширять ессно не проблема.. Sardar, у тебя время не правильно меряется. Попробуй выдавать так же начальное/конечное время, что бы можно было сверить. PS: Всё! у меня выходные озеро ждёт |
| Автор: Sardar 7.8.2004, 20:03 | ||
| sergej.z а где ссылки на это чудо? Таблицы этой подсветки генерятся flex'ом(см. на gnu.org). Так что имея файл описания флекса можно создать подсветку. Если названный движок генерит C код, то его не сложно перенести в JS.
Уже заметил |
| Автор: Sardar 9.8.2004, 02:16 |
| Всем: давайте начнем активно тестить код или ставим что есть. Что нового:
Страница форума: http://files.vingrad.ru/Sardar/highlighter/index.php.htm - просто смотрим и постим сюда результаты. sergej.z прикрути код к своему вьюверу. Классно он у тебя получился |
| Автор: Wowa 9.8.2004, 02:27 | ||
только не вместо, а параллельно |
| Автор: Sardar 9.8.2004, 02:51 |
| Все подсветки до кучи: 1) код написанный neutrino - заточен под язык - вроде от него отказались 2) [K]Syntax - код написан Cheba - заточен под язык - вороде от него тоже отказались 3) SHighlighter - мой код, не заточен под конректыные языки но есть глупости - от него отказываемся 4) код написанный sergej.z - сейчас стоит в его вьювере, очень быстрый, "не ярко разукрашен" 5) мой последний код - быстрый, широкие возможности в раскраске. Последние два можно реально использовать, но характеристики у скриптов разные: мой менленнее(на микросекунды?), но более яркий Возможно мы будем использовать еще третий вариант на движке UltraEdit'a если сумеемего перенести |
| Автор: Wowa 9.8.2004, 02:55 | ||
широкие возможности в раскраске за счет того, что алгоритм умный? У какого кода база слов для раскраски весит меньше? у 4 или 5 ? |
| Автор: Cheba 9.8.2004, 03:01 | ||
Маленькая поправочка. http://polygon.septima.com.ua/highlight/vingrad.htm |
| Автор: Sardar 9.8.2004, 11:50 | ||
Да, по сути я режу текст на лексемы и обрамляю их в теги <span>. Лексемы могут быть самыми разными, какие есть в языке. Например для Java только добавил новую лексему: функция. Подсветка весит: highliter_core.js(4.5kb) - расшаренный код, lang_java.js(7kb) - модуль с данными языка Java. Cheba по твоей ссылке подсветка не запускается. |
| Автор: Cheba 9.8.2004, 19:31 | ||
|
| Автор: sergejzr 10.8.2004, 22:00 | ||||
| Привет! Вот подогнал для viewer: http://www.iwi-iuk.org:8081/cgi-bin/vingrad/test4.php3?oldurl=http://forum.vingrad.ru/index.php?showtopic=27306 Не могу понять, почему там стиль немного отличается от вашего, ведь это по идее копия Возможно, что я не нашёл всех изменений. Посмотрите на досуге Всё же, по моему следовало бы использовать интерфейс отсюда: http://www.iwi-iuk.org:8081/cgi-bin/vingrad/test3.php3 Посмотрите, как там сгенерирован ХТМЛ. Остаётся только написать функцию highlight(ID,lang); Да и к тому же помере загрузки всё же лучше подсвечивать ИМХО. Так же предлагаю этот интерфейс на рассмотрение. Его уже можно было бы встроить независимо от конкретной имплементации подсветки. Елси раньше Хтмл был примерно такой
То теперь следовал бы:
Где java0-однозначное ID, а java - название языка. Так же предлагаю сокращения для других языков: cpp delphi vb csharp asm perl php asp java javascript sql Осталось заиклюдить файл подсветки. ВСЁ! ПС: Ребята, а что с оперой творится? ППС: А, понял там тэги заглавными буквами т.е <BR/> |
| Автор: mr.DUDA 20.8.2004, 17:00 | ||
во-во |
| Автор: Sardar 21.8.2004, 14:36 | ||
Надо переопределить #CODE, там должен быть код из #outp. Я еще в ближайшие 4 дня не смогу делать подсветку, ездил на море, гости, шашлык После быстро наверстаю время. sergej.z большие спасибы за вытягивание этой подсветки, от всей души плюс |
| Автор: sergejzr 22.8.2004, 14:43 | ||||||
Глянь
Тебе спасибо ПС: А вот у меня не получается больше плюсы ставить.. Не знаю почему .. ОФФТОП:
Как у вас там море? А погода? Мы тоже хотели в ваши края заскочить. А то у нас море холодное и ветер... (Хотя в принципе море у нас одно |