Saya akan menjadi orang yang menentang butir-butir di sini dan mengatakan, tidak pernah terlalu dini untuk belajar tentang optimasi, terutama optimasi perakitan dan yang lebih penting, debugging dalam perakitan. Saya percaya bahwa Anda akan mendapatkan manfaat maksimal dari itu jika Anda seorang siswa (karena Anda memiliki sedikit kehilangan (yaitu waktu / uang bijaksana)) dan segalanya untuk mendapatkan.
Jika Anda berada di industri dan tidak ditugaskan untuk bermain-main dalam perakitan, maka jangan. Kalau tidak, jika Anda seorang siswa atau memiliki waktu secara umum, saya akan menemukan waktu untuk belajar membongkar program dan melihat apakah saya dapat menemukan solusi yang lebih baik daripada kompiler. Jika saya tidak bisa, siapa yang peduli! Saya baru belajar cara menulis dan juga kompiler dan itu adalah plus BESAR ketika Anda dihadapkan dengan bug dalam kode rilis (tanpa simbol debug) dan menatap pembongkaran karena itulah satu-satunya hal yang dapat Anda lihat.
Jawabannya
Ini adalah salah satu sumber daya terbaik yang saya temukan untuk belajar tentang optimasi.
http://www.agner.org/optimize/
Kata-kata kasar
Jika Anda membaca beberapa artikel oleh pengembang besar (misalnya, alasan di balik pembuatan EASTL dan pemeriksaan kode yang lebih dekat akan mengarahkan Anda ke komentar seperti melakukan ini karena GCC sangat buruk dalam menguraikan pernyataan if ini yang akan memberi tahu Anda, apa mayoritas orang-orang mengatakan Anda percaya kompiler tidak selalu benar, TERUTAMA dalam pengembangan game) dan kemudian menginjakkan kaki di industri Anda akan menemukan bahwa optimasi adalah hal sehari-hari dan mengetahui apa artinya output perakitan adalah nilai tambah yang besar. Selain itu, orang-orang tampaknya tidak menyadari (terutama pada stackoverflow) bahwa permainan profil sangat sulit dan tidak selalu akurat.
Namun ada peringatan. Anda dapat menghabiskan waktu untuk mengoptimalkan sesuatu dan kemudian menyadari bahwa itu adalah waktu yang terbuang. Tapi apa yang kamu pelajari? Anda belajar untuk tidak mengulangi kesalahan yang sama dalam keadaan yang sama.
Apa yang sekarang diambil oleh SO menurut pendapat saya adalah sikap religius terhadap pernyataan itu tidak mengoptimalkan sampai Anda profil dan jangan khawatir, kompiler tahu lebih baik daripada Anda . Ini menghambat pembelajaran. Saya tahu para ahli di industri yang dibayar dengan uang yang sangat baik (dan maksud saya uang yang SANGAT bagus) untuk bermain-main dalam perakitan untuk mengoptimalkan permainan dan men-debug itu karena kompiler buruk dalam hal itu atau tidak bisa membantu Anda, karena, yah, itu tidak bisa (crash terkait GPU, crash ketika data yang terlibat tidak mungkin untuk dibaca dalam debugger dll.)!
Bagaimana jika seseorang yang suka melakukan itu, belum sepenuhnya menyadarinya, mengajukan pertanyaan di sini dan ditolak / dimatikan oleh banyak jawaban yang diketahui kompiler lebih baik daripada Anda! dan tidak pernah menjadi salah satu programmer yang dibayar tinggi?
Satu pemikiran terakhir. Jika Anda mulai melakukan ini lebih awal, Anda akan menemukan bahwa segera Anda akan mulai menulis kode yang paling buruk, tidak memiliki peningkatan kinerja apa pun karena kompiler mengoptimalkannya dengan cara yang sama atau paling baik, memiliki beberapa peningkatan kinerja karena sekarang kompiler dapat mengoptimalkannya . Dalam kedua kasus itu, sudah menjadi kebiasaan, dan Anda tidak lebih lambat dalam menulis kode dengan cara ini daripada apa yang Anda lakukan sebelumnya. Beberapa contoh adalah (ada banyak lagi):
- Pra-kenaikan kecuali jika Anda benar-benar ingin pasca-kenaikan
- Menulis loop untuk wadah menggunakan variabel ukuran lokal konstan daripada memanggil ukuran () pada wadah dalam loop.
EDIT: Pembaruan setelah 8 tahun lagi dalam industri ini. Pelajari perakitan. Pelajari cara kerja pengoptimal dan perakitan yang mereka hasilkan (CompilerExplorer adalah alat yang hebat untuk itu). Saya telah menemukan crash yang tak terhitung jumlahnya di Test builds (build dioptimalkan untuk pengujian internal) di mana Anda tidak dapat mengandalkan debugger bahkan dengan simbol debug. Kompiler telah mengoptimalkan terlalu banyak hal dan perakitan adalah satu-satunya sumber informasi berharga Anda untuk menemukan bug dari crash dump. Setiap build membutuhkan waktu 30-40 menit jika Anda beruntung dan yang pertama dalam antrean build - jadi Anda tidak dapat mengandalkan beberapa teknik tradisional untuk mengisolasi bug. Multiplayer membuat segalanya lebih buruk. Mengetahui perakitan dan cara membaca perakitan yang dioptimalkan hanya akan membuat Anda lebih baik dan pada akhirnya lebih berharga bagi tim.