Artikel Terbaru

2 Contoh Penggunaan Properti Cookie DOM pada HTML

Hampir setiap website selalu menggunakan cookies pada setiap komputer user untuk mengenali dan menjaga pola atau rute dari suatu referensinya. Properti DOM cookies diatur untuk mendapatkan semua nilai atau key yang cocok terhadap cookies yang berasosiasi dengan dokumen saat ini.

Penjelasan Singkat, Makro Prediksi Cabang pada GCC

Salah satu teknik optimisasi yang sering digunakan pada kernel Linux adalah "_builtin_expect". Ketika dijalankan dengan kode kondisional (if-else statement), maka akan diketahui cabang mana yang benar dan cabang mana yang salah. Jika kompilator dapat mengetahui informasi ini pada tingkat lebih lanjut, maka hal ini dapat menghasilkan bentuk kode yang paling optimal.

Perhatikan definisi makro dari "likely()" dan "unlikely()" dari kode kernel linux “http://lxr.linux.no/linux+v3.6.5/include/linux/compiler.h”.

#define likely(x) __builtin_expect(!!(x), 1) 
#define unlikely(x) __builtin_expect(!!(x), 0) 

Pada contoh berikut, kode program akan ditandai sebagai likely true:

const char *home_dir ; 
home_dir = getenv("HOME"); 

if (likely(home_dir)) 
printf("home directory: %s\n", home_dir); 

else
perror("getenv"); 

Pada contoh sebelumnya, kode program memiliki kodisional "IF" sebagai "likely()" true, sehingga kompilator akan menempatkan kode true secepatnya dan kode false setelahnya dalam instruksi cabang. Karena hal ini,  maka kompilator akan mecapai nilai optimalnya. Tetapi, jangan menggunakan "likely()" dan "unlikely()" makro secara sembarangan. Jika prediksi bernilai benar, maka artinya terdapat 0 siklus dari lompatan instruksi, tetapi jika prediksi bernilai salah, maka akan mengembalikan beberapa siklus, karena preprosesor dibutuhkan untuk melewatkan alirannya, dimana kondisi terburuk yang dapat terjadi adalah kompilator tidak akan memiliki nilai yang dapat diperkirakan.

'Akses memori' adalah operasi CPU yang paling lambat jika dibandingkan dengan jenis operasi CPU lainnya. Untuk menghindari batasan tersebut CPU menggunakan "CPU caches" atau L1-chache, L2-chache, dan lain sebagainya guna meningkatkan kecepatan akses dari CPU tersebut. Ide utama dari chache adalah mengkopi beberapa bagian dari memori ke dalam CPU itu sendiri. Sehingga, dapat dilakukan akses memori lebih cepat daripada memori yang pernaj dilakukan dengan metode sebelumnya. Namun terdapat masalah, dimana "chache memory" ukurannya terbatas, dan proses kopi data tidak dapat dilakukan pada semua ukuran memori tersebut. Sehingga, CPU hanya melakukan prediksi memori mana saja yang akan digunakan pada waktu dekat dan akan melakukan load memori menjadi CPU chache dan makro yang selanjutnya akan digunakan sebagai petunjuk untuk load memori pada cache CPU.

Komentar

  1. Apa yang dimaksud dengan GCC?

    BalasHapus
    Balasan
    1. GCC adalah singkatan dari GNU Compiler Collection yang merupakan kumpulan atau koleksi kompilator yang dikembangkan oleh proyek GNU. Dimana, pada awal rilisnya, GCC merupakan singkat dari GNU C Compoler karena hanya bisa melakukan kompilasi program terhadap bahasa C saja. Namun, pada Desember 1987, kompilator GCC tidak hanya bisa mendukung bahasa C tetapi juga dapat mendukung bahasa C++.

      Hapus
  2. Apa yang dimaksud dengan GNU?

    BalasHapus
    Balasan
    1. GNU adalah singkatan dari "GNU's No Unix". Kalimat ini diucapkan sebagai suatu suku kata dengan kata G digaungkan lebih keras. Richard Stallman membuat pengumuman awal proyek GNU pada bulan September 1983.


      Catatan: iya, benar, itu adalah singkatan dari GNU yang sebenarnya

      Sumber:
      https://www.gnu.org/gnu/pronunciation.html

      Hapus
    2. Iya tujuan dari pembuatan akronim GNU memang untuk lucu-lucuan aja!!

      Hapus
  3. Heish, akronim konyol macam apa ini -____-

    BalasHapus

Posting Komentar

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung. :D

Catatan: setiap iklan yang ditayangkan pada blog ini bersumber dari google adsense. Dengan jenis iklan yang dipilih adalah, sebagai berikut.

POIN 1, Iklan yang ditampilkan hanya boleh berbahasa indonesia atau berbahasa inggris. Tidak menerima jenis iklan dalam bahasa yang lain selain yang telah disebutkan karena blog ini dibuat untuk para pengunjung dari negara atau orang yang berbahasa Indonesia.

POIN 2, Setiap gambar yang ditampilkan pada iklan sifatnya tidak mengganggu para pengunjung yang melihat blog, atau tidak boleh menampilkan gambar yang bersifat menjijikkan atau merangsang rasa mual.

POIN 3, Jenis iklan yang dipasang bukan merupakan iklan spam, atau berisi dan mengarahkan pengunjung ke alamat yang berbahaya atau bersifat penipuan.

POIN 4, Segala bentuk iklan tunduk dan patuh pada ketentuan dari pihak Adsense google dan pemilik blog.

POIN 5, Segala jenis iklan yang tidak bertentangan dengan poin 1-4 yang dijelaskan sebelumnya, maka iklan tersebut dapat ditampilkan pada blog.

POIN 6, Jika ada pihak ketika yang ingin memasang iklan pada blog ini secara langsung, maka dapat menghubungi pemilik blog melalui kontak 0882 3218 8316.



~ Ikatlah Ilmu dengan Memostingkannya ~

Hot Artikel

Enkapsulasi pada Java

Perbedaan stdio.h dan stdlib.h pada Bahasa C

Perbedaan Antara int main() dan int main(void) pada Bahasa C

3 Jenis Utama Looping pada Java

Penjelasan Singkat tentang Konsep Asosiasi, Komposisi, dan Agregasi pada Java

2 Jenis Utama Kegiatan Penelitian Berdasarkan Waktunya, Crosssectional Salah Satunya