Search
Write a publication
Pull to refresh
0
0
xiao @xiao

User

Send message
расчет на авось. как техника защиты не состоятельна.
вполне логично, что их эффективность примерно одинакова, в обоих случаях производится интерпретация и выполнение непредсказуемого кода
eaccelerator, но вообще это это не имеет значения, т.к. при выполнении скрипта в консоли результаты примерно те же. этот тест не кеширующего механизма, а интерпретатора пхп, кеширование пяти строк 300000 итераций мало что даст.
<?php $a=array('a'=>1,'b'=>2,'c'=>3);
$t=microtime(1);for ($i=0;$i<=1e5;$i++) foreach ($a as $k=>$v) $tmp=$k.$v;echo (microtime(1)-$t)."\n";
$t=microtime(1);for ($i=0;$i<=1e5;$i++) foreach ($a as $k=>$v) eval('$tmp=$k.$v;');echo (microtime(1)-$t)."\n";
$t=microtime(1);for ($i=0;$i<=1e5;$i++) array_walk($a, create_function('&$v,$k', '$tmp=$k.$v;'));echo (microtime(1)-$t)."\n"; ?>

Результат:
0.26393890380859
4.604434967041
4.8136839866638

простой foreach быстр, create_function и eval сравнимы, и array_walk добавляет некоторую задержку.
не ясно преимущество использования лямбда-функций при обходе массивов, ведь код в create_function будет интерпретироваться во время выполнения и не попадет в кэширующий механизм.
такую картинку легко повернуть в прямоугольное состояние и она станет очень похожа на обычные

Information

Rating
Does not participate
Registered