2008-08-10

metaclass: (Default)
2008-08-10 02:28 pm

SAX for Pascal

Понадобился мне тут SAX парсер для проекта. Взял первый найденный на sourceforge - saxforpascal.

Сам он по себе нормальный, потому что ничего не делает - это только набор интерфейсов. А вот одна из реализаций, которые там с ним поставляются - безумная. Безумные вещи вроде утечки памяти из-за того, что с объектом одновременно работают и через объектную ссылку и через ссылку на интерфейс, совершенно не оптимальная обработка, отсутствие поддержки кодировок типа win1251 и прочий жах.

На каждый тэг создается и разрушается несколько объектов, причем один из объектов - список строк вида name=value, который сначала получается в виде списка name,value,name,value, затем собирается в список вида name=value,name=value, а потом опять разбирается на список name,value,name,value. Прозреваю, что только за счет этого куска можно ускорить работу раза в 2-3.

Ошибки пришлось поисправлять, а вот оптимизация пока подождет.