Procedure Near vs. Far in Go
Distinzione di chiamata a livello di pacchetto in Go
In Go, una chiamata di funzione viene classificata in fase di compilazione:
- Near (intra-pacchetto): chiamante e chiamato risiedono nello stesso pacchetto. Chiamata diretta, overhead minimo.
- Far (inter-pacchetto): chiamante e chiamato sono in pacchetti diversi. La chiamata passa attraverso uno stub che gestisce il confine del pacchetto.
Perché è importante
La distinzione influenza solo i meccanismi di defer durante panic/recover o pulizia delle risorse. Una funzione far differita memorizza un puntatore a stub; una funzione near memorizza un puntatore diretto. Le chiamate inter-pacchetto sono leggermente più costose, quindi raggruppare funzioni correlate in un unico pacchetto può ottimizzare i percorsi critici.