Intuisi Anda dapat meningkat seiring waktu. Saya akan membuang itu, mungkin sedikit kontroversial, tetapi selama bertahun-tahun menggunakan VTune dan CodeAnalyst dan sekarang CodeXL, saya akan mengatakan saya jauh lebih akurat dalam intuisi saya daripada sebelumnya tentang di mana hotspot akan berada, setidaknya untuk titik di mana saya tidak lagi benar-benar lengah ketika saya profil beberapa kode. Itu tidak berarti saya berusaha mengoptimalkan berbagai hal secara membabi buta.
Profiling sebenarnya telah meningkatkan ketergantungan saya pada profiler, tidak mengurangi itu. Saya hanya mengatakan bahwa saya dapat dengan lebih mudah mengantisipasi apa yang akan terjadi pada profil dan sampai batas tertentu, berhasil menghilangkan hotspot dan meningkatkan waktu yang dibutuhkan untuk menyelesaikan operasi pengguna akhir tanpa mengambil tikungan buta dalam gelap dan hilang (sesuatu yang Anda dapat melakukan bahkan ketika menggunakan profiler sampai Anda mulai memahami tidak hanya apa hotspot itu, tetapi mengapa mereka hotspot sehubungan dengan, katakanlah, cache misses).
Namun, baru setelah saya mulai menggunakan profiler saya mulai meningkatkan intuisi itu. Salah satu alasannya adalah karena jika Anda terbiasa dengan kode Anda, firasat Anda mungkin benar sehubungan dengan hotspot terbesar dan paling jelas, tetapi tidak semua kehalusan di antaranya. Tentu saja jika Anda memiliki operasi pengguna-akhir yang membutuhkan waktu satu jam untuk menyelesaikan dan ada satu algoritma kompleksitas kuadratik menganga memproses input yang mencakup seratus ribu elemen, Anda mungkin bisa keluar dengan kaya mempertaruhkan seluruh tabungan seumur hidup Anda dengan gagasan bahwa itu adalah kompleksitas kuadratik Algoritma salah di sini. Tetapi itu tidak memberi Anda wawasan terperinci atau, katakanlah, beri tahu Anda dengan pasti apa yang tidak berkontribusi pada waktu itu.
Ada begitu banyak nilai yang bisa didapat ketika Anda mulai membuat profil dan melihat di mana semua hal yang Anda pikir mungkin menjadi kontributor waktu yang lebih besar tidak berkontribusi banyak waktu; bukan sumber-sumber inefisiensi yang menganga tetapi yang Anda curigai mungkin sedikit tidak efisien tetapi, setelah diprofilkan, menyadari bahwa mereka nyaris tidak berkontribusi kapan saja. Dan itu berpotensi di mana Anda memperoleh wawasan paling intuitif adalah menemukan diri Anda ditampilkan salah di semua area halus di mana tidak jelas berapa banyak waktu yang dihabiskan.
Intuisi manusia di luar kerumitan algoritmik yang jelas seringkali akan mulai salah karena apa yang efisien untuk mesin dan apa yang efisien bagi pikiran manusia sangat berbeda. Awalnya tidak begitu intuitif untuk berpikir tentang hierarki memori dari register ke cache CPU ke DRAM ke disk. Itu tidak datang secara intuitif untuk berpikir bahwa aritmatika redundan mungkin lebih cepat daripada melakukan lebih banyak percabangan atau akses memori dari tabel pencarian untuk melewati beberapa pekerjaan pemrosesan. Kita cenderung berpikir dalam hal berapa banyak pekerjaan yang harus dilakukan sambil mendiskontokan hal-hal seperti biaya pengambilan keputusan dan memori serta penyimpanan. Apa yang efisien untuk perangkat keras sering sangat kontra-intuitif dengan cara yang akan mematahkan semua asumsi manusia Anda mulai,
Di mana meningkatkan intuisi dapat membantu, melalui pembuatan profil, adalah desain antarmuka . Desain antarmuka sangat mahal untuk diubah jika ditinjau kembali, dengan biaya yang meningkat secara proporsional dengan jumlah tempat tergantung pada antarmuka itu. Ketika Anda mulai meningkatkan intuisi Anda, Anda dapat mulai merancang antarmuka yang lebih baik pertama kali dengan cara yang meninggalkan ruang bernapas untuk optimasi di masa depan tanpa perubahan desain yang mahal. Namun sekali lagi, intuisi itu adalah sesuatu yang biasanya Anda kembangkan, dan terus kembangkan tanpa batas, dengan selalu memiliki profiler itu di tangan.