Adakah Pengecualian dalam C Masih Lambat?
Dakwaan Andrei Alexandrescu bahawa pengecualian C adalah sangat perlahan telah menimbulkan kebimbangan tentang kecekapannya dalam C 98. Walau bagaimanapun, model pengendalian pengecualian semasa yang dikenali sebagai Pengecualian Model Kos Sifar menangani isu ini.
Dalam model Kos Sifar, pengkompil mencipta jadual sisi yang memetakan titik di mana pengecualian boleh dibuang ke senarai pengendali. Apabila pengecualian berlaku, jadual ini digunakan untuk menentukan pengendali yang sesuai dan melepaskan timbunan. Proses ini jauh lebih pantas daripada menyemak pengecualian secara eksplisit pada setiap titik.
Berbanding dengan strategi tradisional if (ralat), model Zero-Cost:
Walau bagaimanapun, pengukuran prestasi boleh menjadi mencabar disebabkan oleh faktor seperti kesilapan cache dan overhed RTTI.
Perlahan Di Laluan Luar Biasa
Walaupun terdapat peningkatan kecekapan, pengecualian kekal perlahan pada laluan yang luar biasa. Walau bagaimanapun, ini biasanya diatasi dengan kelebihan kelajuan mereka berbanding semakan eksplisit pada majoriti laluan kod.
Kebolehbacaan lwn. Prestasi
Tidak kira pertimbangan prestasi, kebolehbacaan kod harus diutamakan. Pengecualian harus digunakan apabila pemanggil tidak boleh atau tidak mahu menangani kegagalan secara tempatan. Walau bagaimanapun, piawaian C 11 membenarkan rujukan yang disemak yang menyediakan pendekatan yang lebih terkawal untuk pengendalian pengecualian.
Kesimpulan
Walaupun pengecualian mungkin tidak begitu pantas, kesan prestasinya adalah minimum berbanding dengan faedah yang mereka sediakan untuk kebolehbacaan dan organisasi kod. Pembangun harus mengutamakan kejelasan kod dan kemudahan penyelenggaraan berbanding kebimbangan pengoptimuman pramatang.
Atas ialah kandungan terperinci Adakah Pengecualian C Masih Halangan Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!