2038年問題を考えるとdatetime一択になりますが、2038年には作ったシステムないからdateでいいやと思っている or datetime覚えるのマンドクセ('A` )という人にdateよりもdatetimeに乗り換える理由をもう1つ示してみようと思う。
単純に1万回時刻計算してどっちが早く終わるか?というのを出すだけなんですけどね。
あんまし複雑すぎて違うところで差が出ても困るので先月を求めるという単純なものを用意。
(今日が2014年3月なら2014年2月を求めるという内容)
結果は以下の通り
10,000回試行した平均値
date : 0.79 秒
datetime : 0.10 秒
// 開始時間
$startTime = microtime(true);
// 1万回ループ
$lastmonth = new DateTime('-1 months');
for ($i = 0; $i < 10000; $i++) {
// 処理
echo $lastmonth->format('Ym');
}
// 終了時間
$endTime = microtime(true);
// 終了時間 - 開始時間
echo $endTime - $startTime . '秒';
// 開始時間
$startTime = microtime(true);
// 1万回ループ
for ($i = 0; $i < 10000; $i++) {
// 処理
echo date('Ym', strtotime('-1 month'));
}
// 終了時間
$endTime = microtime(true);
// 終了時間 - 開始時間
echo $endTime - $startTime . '秒';
datetime : 0.75 秒
(for文内にクラスも含めた場合)
関連記事