Pengoptimuman rekursi ekor ialah teknik yang membolehkan pengkompil mengoptimumkan panggilan rekursif yang berlaku pada penghujung fungsi (ekor panggilan). Pengoptimuman ini membantu mengurangkan penggunaan memori tindanan program dan meningkatkan prestasinya.
Adakah mana-mana pengkompil C melakukan pengoptimuman pengulangan ekor?
Ya, semua pengkompil C arus perdana , termasuk GCC, Clang dan MSVC, melakukan rekursi ekor pengoptimuman.
Mengapa dan mengapa tidak?
Pengoptimuman ekor-rekursi tidak selalu mungkin disebabkan oleh sebab berikut:
Bagaimana untuk memberitahu pengkompil untuk melakukan rekursi ekor pengoptimuman?
Untuk penyusun seperti MSVC, GCC, Clang dan ICC, hanya dayakan pengoptimuman untuk kelajuan menggunakan bendera berikut:
Bagaimana untuk menyemak sama ada pengkompil telah melakukan pengoptimuman dalam kes tertentu?
Petua untuk mengoptimumkan kod anda untuk ekor. rekursi:
Ujian untuk pengoptimuman rekursi ekor:
Untuk mengesahkan sama ada pengkompil telah melakukan pengoptimuman rekursi ekor untuk fungsi tertentu, anda boleh melakukan panggilan rekursif yang biasanya akan mengakibatkan limpahan tindanan jika pengoptimuman tidak digunakan. Jika program berjalan tanpa limpahan tindanan, kemungkinan pengoptimuman telah dilakukan.
Atas ialah kandungan terperinci Adakah Penyusun C Melakukan Pengoptimuman Ekor-Rekursi, dan Bagaimana Saya Boleh Tahu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!