Tuesday, July 9, 2013

Performa indeks dalam mengganti logika if di MATLAB

Posting ini berkaitan dengan posting saya sebelumnya yakni tentang vektorisasi molekular dinamik di MATLAB:
yang sampai saat ini masih menyisakan pertanyaan besar di kepala saya. Antara lain, mengapa vektorisasi justru membutuhkan waktu lebih lama, serta yang kedua, entah kenapa simulasinya g sesuai dengan yang diharapkan: terjadi kolaps setelah waktu tertentu dan perpindahan posisi yang cukup lambat ketimbang companion-nya yang dibuat di java [1]. Dalam menyelidiki masalah ini saya sekali lagi pengen menunjukin kenapa vektorisasi itu penting di MATLAB dan sebisa mungkin kita harus menghindari loop dalam menulis program di MATLAB.

Oleh karena itu saudara bisa menyimak listing berikut

Terlihat jelas bahwa penggunaan indeks di MATLAB bisa digunakan untuk mengganti logika if pada looping. Lantas bagaimana dengan performanya. Pada listing berikut ini telah saya ukur bagaimana performa dari indeks sendiri.

Yang mana menunjukkan bahwa dengan menggunakan indeks kita bisa mengurangi waktu eksekusi program hingga sampai setengahnya. Hal ini jelas disebabkan oleh perintah indeks sendiri ditangani secara 'native' oleh MATLAB interpreter.

Fakta kedua yang bisa digaris bawahi adalah ternyata dua fungsi dalam satu file pada MATLAB alokasi eksekusinya  ditempatkan pada core processor yang berbeda seperti  sudah saya komentari pada listing di atas.


1. Ternyata perintah axis manual di MATLAB hanya berlaku ketika ada perintah  hold on.

No comments: