Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Melumpuhkan CGO Melambatkan Kompilasi Walaupun Tanpa Menggunakan C Bindings?

Mengapa Melumpuhkan CGO Melambatkan Kompilasi Walaupun Tanpa Menggunakan C Bindings?

Susan Sarandon
Susan Sarandonasal
2024-11-09 00:52:02897semak imbas

Why Does Disabling CGO Slow Down Go Compilation Even Without Using C Bindings?

Mengapa Menyusun dengan CGO_ENABLED=0 Ditanggung Kelembapan

Walaupun tidak menggunakan pengikatan C, menyusun dengan CGO_ENABLED=0 nyata memperlahankan penyusunan. Untuk memahami puncanya, kita mesti menyelidiki mekanisme yang sedang dimainkan.

Pakej perpustakaan standard dibina menggunakan bendera kompilasi yang telah ditetapkan. Apabila CGO_ENABLED ditetapkan kepada 0, bendera binaan diubah suai, menjadikan pakej pra-bina tidak serasi. Akibatnya, majoriti pustaka standard mesti dibina semula.

Walaupun "go build -i" boleh memasang pakej yang dibina dengan bendera baharu, ia tidak menyelesaikan sepenuhnya isu tersebut. Memasang pakej yang dibina dengan CGO_ENABLED=0 mempercepatkan binaan masa hadapan dengan bendera yang sama, tetapi menghalang binaan tanpanya.

Kaedah pemasangan lalai untuk pakej pra-bina adalah tidak cekap, dengan semua pakej disimpan dalam direktori yang sama dengan yang serupa nama tanpa mengira konfigurasi binaan mereka. Untuk mendayakan binaan pantas dengan bendera yang berbeza-beza, "go build -i" hendaklah digabungkan dengan bendera "-installsuffix" atau "-pkgdir". Dengan memperuntukkan direktori unik untuk setiap mod kompilasi, binaan berasingan dengan bendera berbeza boleh ditampung dengan lancar.

Atas ialah kandungan terperinci Mengapa Melumpuhkan CGO Melambatkan Kompilasi Walaupun Tanpa Menggunakan C Bindings?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn