Bagaimana sebuah program (source code) bisa dikatakan efektif dengan melihat dari segi compilernya?

Semua program yang telah kita buat pasti akan dijalankan tetapi sebelum menjalankan program tersebut, code yang kita tulis harus di compile terlebih dahulu sehingga bagaimana sebuah program (source code) bisa dikatakan efektif dengan melihat dari segi compilernya ?

Bahasa pemrograman tingkat tinggi menawarkan banyak konstruksi pemrograman abstrak seperti fungsi, pernyataan kondisional dan loop yang membuat kita sangat produktif. Namun, salah satu kelemahan penulisan kode dalam bahasa pemrograman tingkat tinggi adalah penurunan kinerja yang berpotensi signifikan. Idealnya, Anda harus menulis kode yang mudah dipahami dan mudah dipelihara - tanpa mengorbankan kinerja. Untuk alasan ini, kompiler berusaha untuk secara otomatis mengoptimalkan kode untuk meningkatkan kinerjanya, dan mereka menjadi sangat canggih dalam melakukannya saat ini.
compiler adalah program yang mengubah kode sumber kita menjadi format tingkat mesin, format ini (dalam biner) diproses dan dijalankan oleh mesin untuk memberi kita keluaran yang sesuai. Penerjemah juga melakukan pekerjaan yang sama, hanya dengan pendekatan yang berbeda.
Sementara kompilator mengubah semua kode sekaligus dan memberikannya pada mesin untuk dieksekusi, penafsir mengubah baris kode per baris dan memberi satu baris pada satu waktu ke mesin
untuk eksekusi.

Ada banyak teknik pengoptimalan kompiler mulai dari transformasi sederhana, seperti folding konstan, sampai transformasi ekstrim, seperti penjadwalan instruksi. Namun, pada artikel ini, saya akan membatasi pembahasan pada beberapa pengoptimalan yang paling penting - yang dapat meningkatkan kinerja secara signifikan (dengan persentase dua digit) dan mengurangi ukuran kode: fungsi inlining, pengoptimalan COMDAT dan pengoptimalan loop.

Jika mengkompilasi kode di telepon Anda diperlukan, maka pilihan terbaik adalah menggunakan kompiler online yang bagus. Dalam mode online, kompiler dipasang di sisi server. Umumnya server sangat kuat dalam hal perhitungan; kompiler yang paling andal untuk setiap bahasa digunakan dalam kasus seperti itu. Kompilator server-side mengeksekusi kode dan mengirimkan output yang akan ditampilkan pada akhir aplikasi pengguna. Ini adalah cara yang andal untuk mengkompilasi program. Di server Pemrograman Hub, kami telah menyediakan sistem kompilator untuk semua bahasa pemrograman kami yang tersedia, sehingga pengguna dapat belajar dan menguji, melihat keluaran kode mereka yang paling asli.

image

Dalam komputasi, compiler yang optimal adalah kompiler yang mencoba meminimalkan atau memaksimalkan beberapa atribut dari program komputer yang dapat dieksekusi. Persyaratan yang paling umum adalah meminimalkan waktu yang dibutuhkan untuk menjalankan sebuah program; Yang kurang umum adalah meminimalkan jumlah memori yang ditempati. Pertumbuhan komputer portabel telah menciptakan pasar untuk meminimalkan daya yang dikonsumsi oleh sebuah program.

Kompiler C modern dan Fortran menghasilkan kode yang sangat optimal. Kompiler C ++ umumnya menghasilkan kode yang kurang efisien, namun masih berjalan dengan baik di sepanjang jalur untuk menghasilkan kode yang optimal. Tapi masih banyak trik yang harus dilakukan agar kompiler menghasilkan kode yang efisien.

Memahami pekerjaannya

Mengkonversi kode ke dalam format tingkat mesin memerlukan proses seperti analisis semantik, penguraian, analisis leksikal, pengoptimalan kode, dll. Proses ini tidak dapat dilakukan secara manusiawi dalam waktu yang dapat dibenarkan dan kami dapat berterima kasih kepada kompiler karena, karena menangani semua langkah tersebut .

Dari tingkat pekerjaan yang dilakukan, dapat dengan mudah dipahami bahwa kompiler adalah program yang kompleks. Program semacam itu memiliki berbagai komponen dan struktur dimana ukuran keseluruhannya cukup besar. Sebagian besar semua paket perangkat lunak kompilator di zip untuk memampatkan ukuran saat mendistribusikan, namun bila digunakan pada mesin, dibutuhkan memori dan kapasitas pemrosesan yang baik. Syukurlah, PC dan laptop kita akhir-akhir ini dibangun dengan konfigurasi hardware yang cukup untuk menjalankan berbagai kompiler dengan lancar.

Ada empat cara untuk membantu compiler mengoptimalkan kode Anda dengan lebih efektif:

  • Tulis kode yang mudah dipahami dan mudah dipelihara. Jangan melihat fitur berorientasi objek Visual C ++ sebagai musuh kinerja. Versi terbaru dari Visual C ++ dapat menyimpan overhead tersebut seminimal mungkin dan terkadang menghilangkannya sepenuhnya.

  • Gunakan arahan kompilator. Misalnya, beritahu compiler untuk menggunakan konvensi pemanggilan fungsi yang lebih cepat daripada yang default.

  • Gunakan fungsi compiler-intrinsik. Fungsi intrinsik adalah fungsi khusus yang implementasinya disediakan secara otomatis oleh kompilator. Kompilator memiliki pengetahuan yang mendalam tentang fungsi dan mengganti fungsi panggilan dengan urutan instruksi yang sangat efisien yang memanfaatkan target ISA. Saat ini, Microsoft .NET Framework tidak mendukung fungsi intrinsik, jadi tidak satupun bahasa yang dikelola mendukungnya. Namun, Visual C ++ memiliki dukungan luas untuk fitur ini. Perhatikan bahwa saat menggunakan fungsi intrinsik dapat meningkatkan kinerja kode, akan mengurangi keterbacaan dan portabilitasnya.

  • Gunakan pengoptimalan yang dipandu profil (PGO). Dengan teknik ini, compiler tahu lebih banyak tentang bagaimana kode tersebut akan berperilaku pada waktu berjalan dan dapat mengoptimalkannya sesuai dengan itu.

Keuntungan menggunakan compiler: -

  1. Karena compiler mengubah program menjadi kode asli dari mesin target (kode objek), kinerja lebih cepat dapat diharapkan.

  2. Ada ruang lingkup untuk pengoptimalan kode.

SUMBER :

image

Kompiler

adalah suatu program yang menerjemahkan bahasa program tingkat tinggi (source code) menjadi bahasa tingkat rendah (bahasa Biner). Ketika program akan dijalankan, program tersebut harus melewati bagian compiler terlebih dahulu sebelum dioutputkan.

Berikut adalah contoh proses kompile sebuah program :

Program Penjumlahan

Program #1

  1. Dideklarasikan dua variabel x dan y bertipe data integer yang nilai nya telah ditentukan
  2. Mencetak kalimat “The sum of x+y is” dan proses matematika x+y.

Didapatkan hasil compile dari program diatas dengan waktu 0.2 detik dengan hasil penjumlahan x+y adalah 35

image

Kemudian di program kedua diberi source code yang berbeda tetapi menghasilkan nilai yang sama.

Program #2

  1. Dideklarasikan tiga variabel x, y, dan z bertipe data integer yang nilai x dan y telah ditentukan
  2. Melakukan proses matematika penjumlahan variabel x dan y yang akan disimpan di variable z bertipe data integer
  3. Mencetak kalimat “The sum of x+y is” dan variable z yang bertipe data integer.

Didapatkan hasil compile dari program diatas dengan waktu 0.1 detik dengan hasil penjumlahan x+y adalah 35

image

Dari kedua proses kompile bisa kita simpulkan bahwa source code yang lebih efisien dapat mempermudah kompiler sehingga waktu yang dibutuhkan untuk proses kompile didapat lebih efektif / cepat, sehingga disarankan dalam pembuatan program harus memperhatikan :

  1. Kode program yang simpel dan efisien, supaya proses compiling kode jauh lebih cepat.
  2. Konsisten dalam penulisan kode program, seperti pemberian nama variabel, ukuran, case sensitive supaya mudah untuk mengingatnya.
  3. Selalu update, karena terkadang tedapat cara penulisan yang diatur ulang oleh pihak developer dari bahasa pemrograman yang kita gunakan.

SUMBER :