parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

+1

Misha v.3 08.05.2012 06:50 / 08.05.2012 12:32

там делается куча лишнего. например, в момент создания объекта уже происходит печать во внутреннюю переменную.
если вы в конструкторе закомментируете вызов advancedfields, то работа ускориться в 3 раза (я замерил).

далее, вы делаете:
$dLY[^cdate::create[$mData.LY]]
а чуть ниже:
^cdate:print[$mData.LY;%h %d;$cdate:es_locale]
второй метод ещё раз выполняет create (который очень долгий).
у вас в процесе каждой итерации делается 2 create + 2 print + 2 print в dbe_print, т.е. объект cdate создаётся 6 раз, хотя можно обойтись двумя созданиями.

т.е. надо подправить класс, чтобы он в качестве параметра конструктору принимал также объект типа cdate и в этом случае просто копировал поля, а потом печать делать так:
^cdate:print[$dLY;%h %d;$cdate:es_locale]

как вариант: создавайте объект не так:
$dLY[^cdate::create[$mData.LY]]
а так:
$dLY[^cdate::create[$mData.LY;$cdate:es_locale]]
и потом печатайте его не так:
^cdate:print[$mData.LY;%h %d;$cdate:es_locale]
а так:
$dLY.local

P.S. ещё в классе куча ошибок в английских названиях месяцев и дней недели :)
P.P.S. ещё там захардкоден период с dst
P.P.P.S. я исправлю ошибки написания, добавлю конструктор от cdate, внесу небольшие улучшения и обновлю класс чуть позже (но уже могу выслать по почте).