Mengompilasi vs menggunakan kinerja binari yang dibuat sebelumnya?


11

Akankah kinerja menjadi lebih baik (lebih cepat) jika saya secara manual mengkompilasi sumber untuk komponen perangkat lunak untuk mesin yang sebenarnya akan digunakan, dibandingkan dengan jika sumber dikompilasi pada platform lain mungkin untuk banyak arsitektur yang berbeda? Saya mendapatkan beberapa hasil kompilasi sumber yang baik yang saya unduh dan saya bertanya-tanya apakah ini karena mengkompilasinya alih-alih mengunduh biner yang sudah dikompilasi yang sering terjadi dengan pembaruan perangkat lunak.


2
Kompilasi untuk kompatibilitas dengan banyak arsitektur berpotensi menghilangkan optimisasi tertentu yang mungkin dilakukan saat mengkompilasi untuk arsitektur tunggal.
Robert Harvey

1
Selain lebih bertarget (yang hampir selalu bermanfaat), Anda mungkin juga akan menemukan perbedaan besar di antara kompiler - kompiler yang berbeda mendukung optimisasi yang berbeda, dan kadang-kadang bottleneck kinerja dapat dioptimalkan satu per satu, tetapi tidak pada yang lain.
Daniel B

Jawaban:


8

Dalam banyak kasus (jika tidak sebagian besar), ya. Ini karena kompiler dapat menghasilkan kode asli yang dioptimalkan untuk CPU dan lingkungan tersebut. Kode ini lebih "bertarget".


7

Kompilasi dari sumber memberi Anda keuntungan mengatur flag kompiler seperti yang Anda inginkan untuk platform spesifik Anda. Mengunduh paket yang telah dikompilasi dengan pengaturan yang persis sama seperti milik Anda tidak akan memberikan perbedaan, tetapi mengubah pengaturan dari default dapat memberi Anda perbaikan besar.

Misalnya, jika binari yang ditawarkan untuk diunduh dikompilasi untuk debugging (sengaja atau tidak sengaja), menyalakan optimisasi yang lebih agresif akan meningkatkan kinerja di hampir semua situasi. Di sisi lain, jika kode yang dikompilasi dioptimalkan ke max, Anda tidak akan melihat perbedaan.


Jadi usaha kompilasi saya mungkin tidak sia-sia. Saya mengunduh sumber ke mod_jk dan mengkompilasi dan itu menjadi sangat cepat dan saya bertanya-tanya apakah itu karena kompilasi manual. Terima kasih atas jawabannya.
Niklas

1

Ini sangat tergantung pada dua kompiler dan flag kompiler yang digunakan. Biasanya, pengaturan kompiler dan flag pada mesin lokal Anda lebih sesuai untuk mesin khusus Anda jika Anda memiliki hal-hal yang dikonfigurasi dengan benar.

Tetapi, jika, misalnya, biner pra-bangun kebetulan dibangun dengan kompiler pengoptimal yang jauh lebih baik (atau benchmark yang dirancang khusus dengan bendera yang disetel untuk potongan kode tertentu dan beruntung sesuai untuk sistem Anda) dibandingkan dengan kompiler pada sistem Anda, maka mungkin saja kompiler apa pun yang ada di sistem Anda sebenarnya dapat menghasilkan kinerja yang lebih buruk.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.