Время работы DateTime и strtotime, date

Я тут писал про один способ преобразования mysql даты в любой другой формат, и Кристиан Арчер написал мне про тот самый способ, который используют все.  Но! Во-первых, он процедурный. А во-вторых, мне заинтересовала скорость его работы. Поэтому Я решил протестировать данные куски кода. 

Итак нам надо сравнить скорость выполнения работы php скрипта:

$a = date('d/m/Y',strtotime('Y-m-d'));

И скорость выполнения работы php скрипта:

$date = DateTime::createFromFormat('Y-m-d','Y-m-d');
$a = $date->format('d/m/Y');

Пишем скрипт:

<!--?php 
$countTime = 0; // счетчик времени
 
for($i = 0; $i < 10000; $i++) { // прогоняем 10000 раз
	$randDate = rand(1980,2012).'-'.rand(1,12).'-'.rand(1,29); // получаем произвольную дату
	$start = get_micro_time(); // старт
	$a = date('d/m/Y',strtotime($randDate)); // преобразовываем
	$countTime += get_micro_time()-$start;  // прибавляем
}
 
echo 'strtotime отработал за: '.$countTime;
echo '<br?-->';
 
$countTime = 0;
 
for($i = 0; $i &lt; 10000; $i++) { 	
	$randDate = rand(1980,2012).'-'.rand(1,12).'-'.rand(1,29); // получаем произвольную дату
	$start = get_micro_time();// старт 	
	$date = DateTime::createFromFormat('Y-m-d',$randDate);// преобразовываем 	
	$a = $date-&gt;format('d/m/Y');// преобразовываем
	$countTime += get_micro_time()-$start; // прибавляем
}
 
echo 'DateFormat отработал за: '.$countTime;
 
function get_micro_time() {
	list($usec, $sec) = explode(" ",microtime());
	return ((float)$usec + (float)$sec);
}
?&gt;

Результат у меня получился такой:

strtotime отработал за: 0.30280590057373
DateFormat отработал за: 0.22202725410461

 

Как видим, за 10000 прогонов данной операции мы получили отставание date(»,strtotime()) во времени на целую 0.078 секунды :)

Скачать скрипт datetime vs strtotime.

Читайте также:

комментариев 7

  1. 25% может смысл и есть, но повальная замена неоправдана

    p.s. о! опенид заработал :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *