Kemarin tanggal berapa ya?
Kerja hari ini saya dihadapkan pada problem tanggal. Ceritanya, ada script yang harus diperbaiki. Karena metode yang digunakan berbeda dengan sebelumnya, akhirnya saya harus bermain-main dengan tanggal, atau lebih spesifik lagi, tanggal kemarin. Dari dulu, yang ada dikepala saya, kalau mengambil tanggal kemarin di PHP itu adalah mengambil dari fungsi mktime() yang dikombinasikan dengan date():
<?php $yesterday = date("Y-m-d", mktime(0,0,0,date("m"), date("d")-1, date("Y"))); ?>
Tapi, ada tapi-nya nih... Hari ini pikiran saya susah sekali untuk diajak kompromi, jadi saya sama sekali lupa pada metode simple diatas dan re-invent the whell. Sampai akhirnya saya menemukan bahwa untuk mendapatkan tanggal kemarin bisa dengan kode seperti berikut:
<?php $yesterday = date('Y-m-d', (strtotime($today) - (24*60*60))); ?>
Yang dioptimize menjadi:
<?php $yesterday = date('Y-m-d', (strtotime($today) - (86400))); ?>
. Tapi aneh, sampai disini saya tiba2 ingat metode pertama yang menimbulkan niat untuk menguji performa diantara metode tersebut, mana yang paling cepat.
Kemudian saya membuat script benchmark sederhana:
<?php
$total = 100000;
$today = date('Y-m-d');
$start1 = microtime(true);
for($i = 1; $i <= $total; $i++){
$yesterday = date("Y-m-d", mktime(0,0,0,date("m"), date("d")-1, date("Y")));
//$yesterday = date('Y-m-d', strtotime('-1 day', strtotime($today)));
}
$end1 = microtime(true);
//echo "$start1 - $end1\n";
$time1 = $end1 - $start1;
$start2 = microtime(true);
for($i = 1; $i <= $total; $i++){
$yesterday = date('Y-m-d', (strtotime($today) - (86400)));
}
$end2 = microtime(true);
//echo "$start2 - $end2\n";
$time2 = $end2 - $start2;
echo "Benchmark $total times.\n";
echo "Method 1: $time1\n";
echo "Method 2: $time2\n";
//echo "\n";
//echo "\n";
?>
Hasil yang didapat cukup membuat saya kaget. Ternyata ada gunanya juga sedikit pikun
). Sebab, metode kedua mampu meningkatkan performa berkali lipat. Berikut output setelah 3 kali menjalankan script benchmark:
Benchmark 100000 times. Method 1: 27.5039460659 Method 2: 9.91087913513 Benchmark 100000 times. Method 1: 25.8903188705 Method 2: 9.55417895317 Benchmark 100000 times. Method 1: 36.927713871 Method 2: 14.1359829903
Dari sini bisa dilihatkan kalau metode kedua ternyata lebih cepat. Jadi, kalau lain waktu butuh metode untuk mengetahui tanggal kemarin, pergunakanlah metode kedua. Kalo ada yang lebih cepat lagi, kasih kabar ya!!!
10 Most Popular Search Terms
-
http://ferdianto.com/ ferdhie
-
http://ferdianto.com ferdhie
-
http://bayu.freelancer.web.id/ ariefbayu
-
http://alcapone.awardspace.com/alcapone waoneleven
-
http://alcapone.awardspace.com/alcapone waoneleven
-
http://adams.web.id/ adams
-
http://adams.web.id adams
-
http://kriwil.com/ aldi
-
http://kriwil.com aldi
-
http://riyogarta.com/ Riyogarta
-
http://riyogarta.com Riyogarta
-
http://ferdianto.com/ ferdhie
-
http://ferdianto.com ferdhie
-
http://bayu.freelancer.web.id/ ariefbayu
-
http://www.hilman.web.id/ anton
-
http://www.hilman.web.id anton








