php_templates 1.7

Name

Новичок
Вот так должно получиться
1 2 3 4 5 6
1 2 3 4 5 6
или
0 0 0 0 0 0 0
1 1 1 1 1 1 1
....
 

ONK

Пассивист PHPСluba
Это параметры управления тестом.
Всего их 3.

k - устанавливает количество итераций цикла инициализирующего динамический блок №1 из шаблона


a - устанавливает метод заполнения блока №1. Дин метод более приближен к реальности но всёравно далёк от нё, зато другой позволяет более точно оценивать время работы обработчика шаблонов, это особенно актуально если в обработчике нет встроенного таймера :).

f - включатель вывода сгенерированного кода, для тестов код не нужен, но посмотреть всё ли корректно обрабатывается иногда нужно..

Теперь немного результатов:

Генерировал таблици со 100 блоками №1, вот параметры вызова скрипта:
?k=100&a=0&f=1
Тест исполнялся 57 милисекунд, из них парсёр шаблонов работал 0.0517sek.

Это в 5 раз медленнее чем аналогичный тест с блоком в котором надо было заменить всего 3 переменных.

Если увеличивать количество итераций скорость генерирования непропорционально и неравномерно сильно падает:

1000 блоков - 1.01970708
2000 - 2.74422395
3000 - 6.35700297
4000 - 11.42014503 (Apache во время исполнения раздувается до 20мб, размер сгенерировнной страници 2,5мб)
5000 - 16сек
 

ONK

Пассивист PHPСluba
___________
|0|0|0|0|0|0|
|1|1|1|1|1|1|
-----------------


Вобщем это второй вариант (если считать что это ссылки в таблице).
Плюс цвета разные у каждого столбца..
 

Name

Новичок
> ?k=100&a=0&f=1
Тест исполнялся 57 милисекунд, из них парсёр шаблонов работал 0.0517sek.
Не знаю как ты меряешь, я штучкой от димы (_dima_timestat).
Расставил как у тебя в шаблоне.

Echo ограничено 100 записями.
$_GET['k'] - не больше 1000

http://www.ezactive.com/example/onk_shablon/my.php?k=100&a=0&f=1
 

ONK

Пассивист PHPСluba
Автор оригинала: Name
> ?k=100&a=0&f=1
Тест исполнялся 57 милисекунд, из них парсёр шаблонов работал 0.0517sek.
Не знаю как ты меряешь, я штучкой от димы (_dima_timestat).
Расставил как у тебя в шаблоне.
ИЗмеряю встроенным в парсёр шаблонов таймером, а общее время измеряю отдельным таймером, запускаемым перед исполнением основной части скрипта ($my_mark = new Time_mark(); )

Echo ограничено 100 записями.
$_GET['k'] - не больше 1000

Всё генерируется правильно, только я непонял, остановка таймера происходит до начала вывода данным или после? У меня тамер останавливается поле того как код страници сгенерирован и сохранён в переменную, но перед тем как вывсти этот код кленту
echo $my_mark->current_time();
echo $str;


http://www.ezactive.com/example/onk_shablon/my.php?k=100&a=0&f=1

Сейчас потестирую чуть подробнее..
 

Name

Новичок
> У меня тамер останавливается поле того как код страници сгенерирован и сохранён в переменную
У меня тоже. tr с красной полосой.

Вообщем на 20 записях, моя лабуда медлеенее примерно в 2 раза php_template, если ниче не напутал.

-------------------------------
Вопрос по php_template.
А вот такой template можно разобрать.
Код:
header
<tmpl:ROW>
	
	html code	
	
	<tmpl:if_admin> {admin_link} </tmpl:if_admin>
	
	html code	

	<tmpl:if_email> {name} </tmpl:if_email>
	<tmpl:else_email><a href="mailto:"{email}" class="gbUser">{name}</a></tmpl:else_email>
	
	html code	

	<tmpl:if_company>
		
		html code	
		
		<tmpl:if_www>{company}</tmpl:if_www>
		<tmpl:else_www><a href={www_link} target="_blank" class="gbUser">{company}</a></tmpl:else_www>
		
		html code
			
	</tmpl:if_company>

	html code	

	<tmpl:if_answer> html code </tmpl:if_answer>

	html code
	
</tmpl:ROW>
footer
Не мутно? Вообщем семь условий (if)
 

Name

Новичок
Для реальных условий:
Формирование и echo страницы, 20 записей, время для всей страницы

php_template - 0.0480 сек
my_tpl - 0.0710 сек

разница 0,023 сек.
Есть какой нибудь смысл в 23 тысячных секунды. Не знаю.
 

ONK

Пассивист PHPСluba
Автор оригинала: Name
Для реальных условий:
Формирование и echo страницы, 20 записей, время для всей страницы

php_template - 0.0480 сек
my_tpl - 0.0710 сек

разница 0,023 сек.
Есть какой нибудь смысл в 23 тысячных секунды. Не знаю.
Ненадо делать выводов раньше времени, Мой тест генерирует 20строк этой таблици за 0.01230502 сек, из них парсёр шаблонов работает 0.010221sek (П3-700, ПХП4.3), но ПХП код не может быть быстрее С, С++ функций, другое дело что можн поиграться с алгоритмом...
 

su1d

Старожил PHPClubа
а) разница не 23 тысячных секунды, а 32 процента
б) на простейших шаблонах с табличкой в 20 рядов такие тесты не делаются.

у меня в паре проектов есть шаблоны с парой сотен тэгов и блоков вместе взятых. как будет себя вести РНР-библиотека с такой нагрузкой? =)
 

Name

Новичок
> а) разница не 23 тысячных секунды, а 32 процента
А это хитрости, как посмотреть, знаешь как графики строят
играют длинной и процентами.

> б) на простейших шаблонах с табличкой в 20 рядов такие тесты не делаются.
Тесты может и не делаються, зато жизни соответствует.

А вообще я не против в скорости php_template.
Как кстати с тем template, много if
 

su1d

Старожил PHPClubа
А это хитрости, как посмотреть, знаешь как графики строят играют длинной и процентами.
какие хитрости на единичном тесте? =)
если хочешь хитростей, то построй зависимость времени обработки от количества обрабатываемых тэгов (и/или их итераций, в смысле повторений).
в качестве примера более менее правильной статистики приведу бенч, который я делал для Вложенных Множеств. как видно, в самом начале графиков при малом кол-ве данных оба метода идут почти идентично, но зато потом появляется огромное расхождение.

Тесты может и не делаються, зато жизни соответствует.
ну, это не серьёзно. жизнь у всех разная. по мне, так 20 строчек из шаблона на три тэга - так это и не жизнь вовсе. =)

навскидку беру один из шаблонов из среднего проекта: ессно, самый загруженный тэгами, потому что там определяются виджеты форм.
делаю:
PHP:
$t=tmpl_open('ventana.html'); 
$ar=tmpl_structure($t, '/' , TMPL_TAG|TMPL_CONTEXT); 
print_r($ar);
выходит 178 тэгов и контекстов. вот это уже жизнь. =))

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

Name

Новичок
А дай посмотреть на 'ventana.html'.
su1d,
Интересно, ты умышленно игнорируешь вопросы типа
(как распарсит такой-то темплэйт), а то потом достанут с вопросами или как.
 

su1d

Старожил PHPClubа
Name, к сожалению пока не могу. у меня в том шаблоне некоторые фичи, которые я не собираюсь opensource'ить по-крайней мере до тех пор, пока не выпущу какой-нибудь неинтранетный проект с ними (но таких пока не предвидится).
и я боюсь, что не совсем понял какой тип вопросов (якобы игнорируемых мною) ты имеешь в виду. поясни, а?

ONK, ты не представляешь как я мечтаю о том, чтобы в сутках было хотя б часиков 48 для начала. =) со временем косячно совсем =/ но тема ни в коем случае не забыта - мне самому жутко интересны результаты. на днях сделаю.
 

ONK

Пассивист PHPСluba
Автор оригинала: su1d

ONK, ты не представляешь как я мечтаю о том, чтобы в сутках было хотя б часиков 48 для начала. =) со временем косячно совсем =/ но тема ни в коем случае не забыта - мне самому жутко интересны результаты. на днях сделаю.
Понимаю, тогда я зашлю новую версию тогоже теста (чуть быстрее работающую)..
 

Name

Новичок
> что не совсем понял какой тип вопросов (якобы игнорируемых мною) ты имеешь в виду. поясни, а?\
Вопрос на этой странице:
04.03.03 12:39
Вопрос по php_template.
А вот такой template можно разобрать.
 
Сверху