time
<?php function mb_addslashes($str) { $from = Array( "\\\\", '"', "'", "\0", "\r", "\n", "\\\z", ); $to = Array( "\\\\", '\"', "\'", "\\\0", "\\\r", "\\\n", "\\\z", ); foreach ($from as $index => $value) { $str = mb_ereg_replace($value, $to[$index], $str, "p"); } return $str; } for ($i = 0; $i < 50000; $i++) { mb_addslashes($str); } ?>
real 0m3.470s
user 0m0.015s
sys 0m0.031s
<?php $from = Array( "\\\\", '"', "'", "\0", "\r", "\n", "\\\z", ); $to = Array( "\\\\", '\"', "\'", "\\\0", "\\\r", "\\\n", "\\\z", ); function mb_addslashes($str) { global $from, $to; foreach ($from as $index => $value) { $str = mb_ereg_replace($value, $to[$index], $str, "p"); } return $str; } for ($i = 0; $i < 50000; $i++) { mb_addslashes($str); } ?>
real 0m3.051s
user 0m0.015s
sys 0m0.015s
こういうような奴でよく呼び出す奴は、global なところにデータを追いやった方がいいようだ。
foreach を使わないと、、、
$from = Array( "\\\\", '"', "'", "\0", "\r", "\n", "\\\z", ); $to = Array( "\\\\", '\"', "\'", "\\\0", "\\\r", "\\\n", "\\\z", ); $from_cnt = count($from); function mb_addslashes($str) { global $from, $to, $from_cnt; for ($i = 0; $i < $from_cnt; $i++) { $str = mb_ereg_replace($from[$i], $to[$i], $str, "p"); } return $str; } for ($i = 0; $i < 50000; $i++) { mb_addslashes($str); }
real 0m2.839s
user 0m0.015s
sys 0m0.000s