parser

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

 

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

Ответ

Misha v.3 28.04.2009 17:10

с чего вы взяли, что проблема именно в этом месте (я ничего криминального в нем не вижы, правда заставляет задуматься ^FORM:file[...])? она может быть где угодно: возможно вы раньше (или позже) делаете что-то очень неоптимально и в результате ходите по грани, из-за чего и начинает всё работать при небольшом убавлении кода.

т.е. ничего конкретного, глядя на этот кусок кода, порекомендовать невозможно (а втыкать compact-ы так, как это делаете вы -- бессмысленно).


что делать:
- посмотреть вообще на расход памяти (эту самую глвную цифру вы и не привели), а также на память, выделенную вам хостером (вдруг заявлена одна цифра, а в реалиях она меньше, например кто-то ошибся, устанвливая лимит?). искать где в вашем используется много памяти (втыкать rusage в checkpoint-ы).

- подключать классы по мере использования (^if(...){^use[...]}). понятно, что это актуально для больших классов, которые используются редко.

- структурировать код, чтобы убрались лишние пробельные символы (отступы). они (пробельные символы) -- накапливаются, а оптимизируются лишь в самом конце, перед выдачей результата.

- если файлы храните в UTF-8, то возможно стоит перейти к 1251, т.к. это снижает расход памяти.

- использовать явный result декларацию его в списке локальных переменных, где это возможно (с head версией это также позволит сэкономить память).

- попробовать head версию, в которой делались и делаются оптимизации, в том числе снижающие расход памяти (без использования compact снижение существенное, при использовании оно сильно меньше). понятное дело, что работоспособность не гарантируется :)