Di universitas, di kursus algoritme kami, kami belajar cara menghitung dengan tepat kompleksitas berbagai algoritma sederhana yang digunakan dalam praktik, seperti tabel hash atau pengurutan cepat.
Tapi sekarang dalam proyek perangkat lunak besar, ketika kita ingin membuatnya lebih cepat, yang kita lakukan hanyalah melihat potongan-potongan individual - ada beberapa loop bersarang di sana yang dapat digantikan oleh tabel hash yang lebih cepat, pencarian lambat di sini yang dapat dipercepat oleh teknik yang lebih mewah - tetapi kami tidak pernah menghitung kompleksitas dari seluruh saluran pipa kami.
Apakah ada cara untuk melakukan itu? Atau apakah orang dalam praktik hanya mengandalkan "lokal" menggunakan algoritma cepat, untuk membuat keseluruhan aplikasi lebih cepat, daripada mempertimbangkan aplikasi secara global?
(Karena bagi saya nontrivial menunjukkan bahwa jika Anda menumpuk banyak algoritma yang dikenal sangat cepat sendiri, Anda juga berakhir dengan aplikasi cepat secara keseluruhan.)
Saya menanyakan hal ini, karena saya ditugaskan untuk mempercepat proyek besar yang telah ditulis oleh orang lain, di mana banyak algoritma berinteraksi dan bekerja pada data input, jadi tidak jelas bagi saya bagaimana dampak dari pembuatan algoritma tunggal lebih cepat pada seluruh aplikasi.
n
meningkat.