Const-Correctness dalam Pengoptimuman
Walaupun const-correctness meningkatkan kebolehbacaan kod dan mengurangkan ralat, kesannya terhadap prestasi adalah terhad bertentangan dengan kepercayaan popular .
Mengisytiharkan penunjuk-ke-const atau rujukan-const sahaja tidak memberikan pengkompil peluang pengoptimuman tambahan. Pengisytiharan const hanya menyatakan cara pengecam harus digunakan dalam skopnya tetapi tidak menjamin bahawa objek asas tidak boleh diubah.
Contoh:
<code class="c">int foo(const int *p) { int x = *p; bar(x); x = *p; return x; }</code>
Walaupun dengan pengisytiharan const, pengkompil tidak boleh menganggap bahawa p kekal tidak diubah oleh bar() kerana ia boleh menunjuk kepada integer global yang bar() mempunyai akses. Jika pengkompil mempunyai pengetahuan yang mencukupi tentang foo() dan bar() dan boleh membuktikan bar() tidak mengubah suai p, pengoptimuman sedemikian masih boleh dicapai tanpa const.
Begitu juga, pengisytiharan const dengan sendirinya tidak membantu dalam pengoptimuman fungsi pemanggil:
<code class="c">int x = 37; foo(&x); printf("%d\n", x);</code>
Foo() kekal mampu mengubah suai x, menjadikannya mustahil untuk pengkompil untuk mengoptimumkan dengan const semata-mata.
Faedah utama const ialah pencegahan ralat dan bukannya pengoptimuman. Ia mengehadkan cara pengecam digunakan dalam skopnya tetapi tidak memaklumkan pengkompil tentang apa-apa yang tidak dapat dipastikan.
Penunjuk lwn. Rujukan
Penunjuk dan rujukan berbeza walaupun mempunyai perwakilan dalam ingatan yang serupa. Semasa penunjuk menyimpan alamat pembolehubah, rujukan bertindak sebagai alias, menyediakan akses terus kepada objek asas. Selain itu, rujukan tidak boleh NULL manakala penunjuk boleh.
Atas ialah kandungan terperinci Adakah Const-Correctness Meningkatkan Prestasi Pengoptimuman?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!