Artikel ini dapat digunakan, disalin, dan disebarluaskan. Cukup cantumkan sumber asli. Jika isinya mengandung kebenaran, semoga memberi kebaikan bagi kita yang memanfaatkannya. Jika ada yang salah, mohon kiranya penulis dimaafkan. Dan sangat baik, jika kesalahan tersebut dapat diberitahukan kepada penulis.
Yanmarshus, 7 Juni 2007, yan[at]daunsalam[dot]net

Keluarkan Dari Loop

Ini hanyalah sebuah tips ringan dalam menulis kode program. Tujuannya untuk mengurangi waktu eksekusi program. Jika program yang dibuat bisa berjalan lebih cepat tentu itu lebih baik. Tips ini tidak berguna apabila yang diharapkan adalah sebaliknya. Tapi adakah orang yang berharap programnya berjalan dengan pelan?

Dalam menulis sebuah program entah dengan bahasa apa, biasanya ada bagian yang berupa loop. Kalau ada waktu, coba lihat-lihat kembali kode program yang pernah dibuat, tentunya yang mengandung loop. Yang akan kita lakukan untuk meningkatkan kecepatan eksekusi program (tepatnya adalah waktu eksekusi loop), adalah mengeluarkan baris kode program yang bisa berada di luar loop. Tentu saja mengeluarkan sebuah baris kode dari dalam loop dilakukan jika baris kode tersebut memang bisa berada di luar loop.

Dengan cara ini akan ada pengurangan waktu eksekusi loop, karena banyaknya instruksi yang dikerjakan akan berkurang. Seberapa besar peningkatan kecepatan bergantung banyak hal. Untuk menguji perbedaannya bisa dengan mengambil waktu sebelum dan sesuah loop dieksekusi, lalu dikurangkan antara waktu akhir dan waktu awal. Uji loop yang belum diperbaiki dengan loop yang sudah diperbaiki. Mudah-mudahan hasilnya memuaskan. Jika program Anda berjalan kacau setelah mengikuti tips ini, jelas itu bukan salah saya :)

Sebagai contoh yang amat sederhana, ditunjukkan pada kode berikut. Awalnya baris kode $a = ($b * 2) + 200; ada dalam loop. Karena baris ini bisa diletakkan di luar loop, maka dikeluarkan dari loop, dengan meletakkan baris ini sebelum loop.

<?php

list($ms,$ss) = explode(" ",microtime());
$awal = $ss + $ms;

$b = 6;
// Ini untuk loop pertama sebelum dibuat lebih cepat
for ($i = 0; $i < 100000; $i++) {
  $a = ($b * 2) + 200;
  $c = $a * $i;
}

list($ms,$ss) = explode(" ",microtime());
$akhir = $ss + $ms;
$lama = $akhir - $awal;

echo "
Loop sebelum dimodifikasi<br>
Awal : $awal<br>
Akhir : $akhir<br>
Waktu : $lama detik<br><br>
";

list($ms,$ss) = explode(" ",microtime());
$awal = $ss + $ms;

$b = 6;
// Ini untuk loop kedua setelah dimodifikasi
$a = ($b * 2) + 200;
for ($i = 0; $i < 100000; $i++) {
  $c = $a * $i;
}

list($ms,$ss) = explode(" ",microtime());
$akhir = $ss + $ms;
$lama = $akhir - $awal;

echo "
Loop setelah dimodifikasi<br>
Awal : $awal<br>
Akhir : $akhir<br>
Waktu : $lama detik<br><br>
";

?>