Mendapatkan kesalahan kompilasi pada kode standar atau kesalahan kompilasi internal lebih mungkin terjadi daripada pengoptimal yang salah. Tetapi saya telah mendengar tentang kompiler mengoptimalkan loop salah melupakan beberapa efek samping penyebab metode.
Saya tidak punya saran tentang cara mengetahui apakah itu Anda atau kompiler. Anda dapat mencoba kompiler lain.
Suatu hari saya bertanya-tanya apakah itu kode saya atau tidak dan seseorang menyarankan valgrind kepada saya. Saya menghabiskan 5 atau 10 menit untuk menjalankan program saya dengan itu (saya pikir valgrind --leak-check=yes myprog arg1 arg2
melakukannya tetapi saya bermain dengan pilihan lain) dan segera menunjukkan kepada saya SATU baris yang dijalankan di bawah satu kasus tertentu yang merupakan masalah. Kemudian aplikasi saya berjalan dengan lancar sejak itu tanpa crash aneh, kesalahan atau perilaku aneh. valgrind atau alat lain seperti itu adalah cara yang baik untuk mengetahui apakah itu kode Anda.
Catatan: Saya pernah bertanya-tanya mengapa kinerja aplikasi saya payah. Ternyata semua masalah kinerja saya dalam satu baris juga. Saya menulis for(int i=0; i<strlen(sz); ++i) {
. Sz itu beberapa mb. Untuk beberapa alasan, kompiler menjalankan strlen setiap kali bahkan setelah optimasi. Satu baris bisa menjadi masalah besar. Dari pertunjukan hingga tabrakan