atv
Новичок
а преобразование, разве, будет делаться двумя головами?на двухголовом Xeon'е
а преобразование, разве, будет делаться двумя головами?на двухголовом Xeon'е
А почему нет, при условии, что "преобразователей" несколько? Я курс, многопроцессорных систем три года назад проходил, может и забыл что-то, но не вижу препятствий для распараллеливания двух процессов с единственным общим внешним ресурсом - файловой системой.Автор оригинала: atv
а преобразование, разве, будет делаться двумя головами?
Но время то будет замеряться для одного процесса. И зачем тебе это время, без сравнительной характеристики...при условии, что "преобразователей" несколько
Просто у меня сильные подозрения, что в начале будет пауза на инициализации (размещение словаря хотя бы). Но я не знаю, как это внутри работает, потому и интересны абсолютные цифры.Автор оригинала: atv
Но время то будет замеряться для одного процесса. И зачем тебе это время, без сравнительной характеристики...
<?php
function bench_php()
{
$data = array();
for($n = 0; $n < 100; $n ++)
{
$data[$n] = $n;
}
include('php_template.php');
}
function bench_xslt()
{
$data = new DOMDocument('1.0', 'utf-8');
$root_node = $data->appendChild($data->createElement('data'));
for($n = 0; $n < 100; $n ++)
{
$root_node->appendChild($data->createElement('n', $n));
}
$template = new DOMDocument();
$template->load('xslt_template.xsl');
$proc = new XSLTProcessor();
$proc->importStylesheet($template);
echo $proc->transformToXml($data);
}
function bench_xml()
{
$data = new DOMDocument('1.0', 'utf-8');
$data->appendChild($data->createProcessingInstruction('xml-stylesheet', 'href="xsl_template.xsl" type="text/xsl"'));
$root_node = $data->appendChild($data->createElement('data'));
for($n = 0; $n < 100; $n ++)
{
$root_node->appendChild($data->createElement('n', $n));
}
echo $data->saveXML();
}
function bench($func)
{
$start_time = microtime(true);
for($n = 0; $n < 1000; $n ++) {
ob_start();
$func();
ob_end_clean();
}
echo round(microtime(true) - $start_time, 2), ' - ', $func;
}
$funcs = array('bench_php', 'bench_xslt', 'bench_xml');
foreach($funcs as $func)
{
bench($func);
echo "\r\n";
}
?>
<?php
foreach($data as $n) echo $n,',';
?>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl: output method="html" encoding="utf-8"/>
<xsl:template match="/data/n"><xsl:value-of select="."/>,</xsl:template>
</xsl:stylesheet>
Добавил такую функцию:Автор оригинала: dark-demon
> for($n = 0; $n < 100; $n ++){ $root_node->appendChild($data->createElement('n', $n));
удивительно, что эта конструкция так быстро пашет
попробуй взять этот метод за основу: http://smileg.jino-net.ru/printer/xslt.inc
function bench_xml2()
{
$data = array();
for($n = 0; $n < 100; $n ++)
{
$data['n'.$n] = $n;
}
echo convertNative2xml(array('data' => $data));
}
function convertNative2xml( $var, $name='data' ){
echo '<o:item key="' . $name . '">';
if( is_scalar( $var ) ) echo $var;
else foreach( $var as $n => $v ) convertNative2xml( $v, $n );
echo "</o:$name>";
}
Можно было и без этого теста сказать, что php будет быстрее, вот только "шаблонизацией средствами php" это никак не назовёш.Ради интереса набросал небольшой бенчмарк:
Лично мне больше интересно было не что быстрее, а на сколько...Автор оригинала: atv
Можно было и без этого теста сказать, что php будет быстрее....
Это я попытался уравнять условия для php и xsltАвтор оригинала: atv
вот только "шаблонизацией средствами php" это никак не назовёш.
Так лучше:Автор оригинала: dark-demon
гм.. а если так?
PHP:function convertNative2xml( $var, $name='data' ){ echo '<o:item key="' . $name . '">'; if( is_scalar( $var ) ) echo $var; else foreach( $var as $n => $v ) convertNative2xml( $v, $n ); echo "</o:$name>"; }
function bench_xml2()
{
$data = array();
for($n = 0; $n < 100; $n ++)
{
$data[$n] = $n;
}
convertNative2xml($data);
}
Если в Symfony компилируемые шаблоны, мне кажется, xslt будет в проигрыше по-любому (с точки зрения производительности).Автор оригинала: atv
Если бы ты сравнил страницу, сгенерированную по типу Symfony, и такую же страницу, полученную XSLT преобразованием, в которой содержался бы вывод дерева или таблицы по каким либо входным данным, вот тогда результат был бы интересным.
Давай уже самАвтор оригинала: dark-demon
не удивительно - писать в один буфер быстрее, чем жонглировать строками...
а если к результату прицепить xslt?
Нет, там PHP используется как шаблонизатор, однако, чтобы добавить ему функциональности, активно используется инклюд, плюс назначение переменных по иерархии вложенных шаблонов.Если в Symfony компилируемые шаблоны
Он есть, смотри внимательно Просто он маленький и его не заметно...Автор оригинала: dark-demon
у меня похапэшного шаблона нет, чтобы сравнивать :-Ъ
Нафик, нафик. Сравнивать php и xslt...Автор оригинала: atv
Нет, там PHP используется как шаблонизатор, однако, чтобы добавить ему функциональности, активно используется инклюд, плюс назначение переменных по иерархии вложенных шаблонов.
Сделай по серьёзнее...Автор оригинала: dark-demon
ой, ну на таких шаблонах тестировать - это не серьёзно