SAX for Pascal
Aug. 10th, 2008 02:28 pmПонадобился мне тут SAX парсер для проекта. Взял первый найденный на sourceforge - saxforpascal.
Сам он по себе нормальный, потому что ничего не делает - это только набор интерфейсов. А вот одна из реализаций, которые там с ним поставляются - безумная. Безумные вещи вроде утечки памяти из-за того, что с объектом одновременно работают и через объектную ссылку и через ссылку на интерфейс, совершенно не оптимальная обработка, отсутствие поддержки кодировок типа win1251 и прочий жах.
На каждый тэг создается и разрушается несколько объектов, причем один из объектов - список строк вида name=value, который сначала получается в виде списка name,value,name,value, затем собирается в список вида name=value,name=value, а потом опять разбирается на список name,value,name,value. Прозреваю, что только за счет этого куска можно ускорить работу раза в 2-3.
Ошибки пришлось поисправлять, а вот оптимизация пока подождет.
Сам он по себе нормальный, потому что ничего не делает - это только набор интерфейсов. А вот одна из реализаций, которые там с ним поставляются - безумная. Безумные вещи вроде утечки памяти из-за того, что с объектом одновременно работают и через объектную ссылку и через ссылку на интерфейс, совершенно не оптимальная обработка, отсутствие поддержки кодировок типа win1251 и прочий жах.
На каждый тэг создается и разрушается несколько объектов, причем один из объектов - список строк вида name=value, который сначала получается в виде списка name,value,name,value, затем собирается в список вида name=value,name=value, а потом опять разбирается на список name,value,name,value. Прозреваю, что только за счет этого куска можно ускорить работу раза в 2-3.
Ошибки пришлось поисправлять, а вот оптимизация пока подождет.