Authentication




Cancel OK
B!コメントする  2014-03-17 14:25:00 by old

dateとdatetimeはどっちが早いのか?

2038年問題を考えるとdatetime一択になりますが、2038年には作ったシステムないからdateでいいやと思っている or datetime覚えるのマンドクセ('A` )という人にdateよりもdatetimeに乗り換える理由をもう1つ示してみようと思う。

単純に1万回時刻計算してどっちが早く終わるか?というのを出すだけなんですけどね。
あんまし複雑すぎて違うところで差が出ても困るので先月を求めるという単純なものを用意。
(今日が2014年3月なら2014年2月を求めるという内容)

結果は以下の通り

10,000回試行した平均値

date : 0.79 秒
datetime : 0.10 秒


差は歴然です。
時間計算をする場所が多々ある場合やアクセスがある程度見込まれる場合などは処理速度向上のためにdatetimeを使いましょうという形になります。
もちろん2038年問題とか今後のメンテナンスも考えるとdatetime一択ではあります。
ちなみに試したコードは以下の簡単なものです。

datetime
// 開始時間
$startTime = microtime(true);
// 1万回ループ
$lastmonth = new DateTime('-1 months');
for ($i = 0; $i < 10000; $i++) {
// 処理
echo $last
month->format('Ym');
}
// 終了時間
$endTime = microtime(true);
// 終了時間 - 開始時間
echo $endTime - $startTime . '秒';


date
// 開始時間
$startTime = microtime(true);
// 1万回ループ
for ($i = 0; $i < 10000; $i++) {
// 処理
echo date('Ym', strtotime('-1 month'));
}
// 終了時間
$endTime = microtime(true);
// 終了時間 - 開始時間
echo $endTime - $startTime . '秒';


datetimeに関してはクラスなのでループ回す前に宣言していますが、仮に宣言自体もループに含めた場合でも平均は

datetime : 0.75 秒
(for文内にクラスも含めた場合)


という結果になりましたので速度面から見てもdatetime一択です。

しかし予算や期間の都合上どうしてもPHPのバージョンが低くdatetimeが使えない場合があります。
そういう場合はフレームワークやモジュール(Pearなど)を使うなどして問題を回避できる場合もあるので検討してみるのも良いかもしれないです。


PHP  

  • コメント
  • コメントはまだありません