Anda mencari kinerja di tempat yang salah. Masalah dengan panggilan fungsi bukan karena harganya yang mahal. Ada masalah lain. Panggilan fungsi bisa benar-benar gratis, dan Anda masih memiliki masalah lain ini.
Itu adalah fungsi seperti kartu kredit. Karena Anda dapat dengan mudah menggunakannya, Anda cenderung menggunakannya lebih dari yang seharusnya. Misalkan Anda menyebutnya 20% lebih dari yang Anda butuhkan. Kemudian, perangkat lunak besar yang khas berisi beberapa lapisan, masing-masing fungsi panggilan di lapisan di bawah, sehingga faktor 1.2 dapat diperparah dengan jumlah lapisan. (Misalnya, jika ada lima lapisan, dan setiap lapisan memiliki faktor perlambatan 1,2, faktor perlambatan majemuk adalah 1,2 ^ 5 atau 2,5.) Ini hanya satu cara untuk memikirkannya.
Ini tidak berarti Anda harus menghindari panggilan fungsi. Maksudnya adalah, ketika kode aktif dan berjalan, Anda harus tahu cara menemukan dan menghilangkan pemborosan. Ada banyak saran bagus tentang cara melakukan ini di situs stackexchange.
Ini memberikan salah satu kontribusi saya.
TAMBAH: Contoh kecil. Suatu kali saya bekerja dalam tim perangkat lunak di pabrik yang melacak serangkaian perintah kerja atau "pekerjaan". Ada fungsi JobDone(idJob)
yang bisa mengetahui apakah suatu pekerjaan dilakukan. Suatu pekerjaan dilakukan ketika semua sub-tugasnya dilakukan, dan masing-masing dilakukan ketika semua sub-operasinya selesai. Semua hal ini disimpan dalam database relasional. Panggilan tunggal ke fungsi lain dapat mengekstrak semua informasi itu, yang JobDone
disebut fungsi lain itu, melihat apakah pekerjaan itu dilakukan, dan membuang sisanya. Maka orang dapat dengan mudah menulis kode seperti ini:
while(!JobDone(idJob)){
...
}
atau
foreach(idJob in jobs){
if (JobDone(idJob)){
...
}
}
Lihat intinya? Fungsinya sangat "kuat" dan mudah dipanggil sehingga terlalu banyak dipanggil. Jadi masalah kinerja bukan instruksi masuk dan keluar dari fungsi. Itu perlu ada cara yang lebih langsung untuk mengetahui apakah pekerjaan telah dilakukan. Sekali lagi, kode ini dapat tertanam dalam ribuan baris kode yang tidak bersalah. Mencoba memperbaikinya terlebih dahulu adalah apa yang semua orang coba lakukan, tapi itu seperti mencoba melemparkan anak panah di ruangan gelap. Yang Anda butuhkan adalah menjalankannya, dan kemudian biarkan "kode lambat" memberi tahu Anda apa itu, hanya dengan mengambil waktu. Untuk itu saya menggunakan jeda acak .