Buraya tahılın karşısına giden ben olacağım ve şunu söyleyeceğim: optimizasyonlar, özellikle montaj optimizasyonları ve daha da önemlisi montajda hata ayıklama hakkında bilgi edinmek için asla erken değildir . Bir öğrenciyseniz (çünkü zaman kaybettiğinizde (yani zaman / para olarak akıllıca) çok azınız varsa) ve kazanacak her şeyiniz varsa, maksimum faydayı elde edeceğinize inanıyorum.
Eğer sektördeyseniz ve montajda dolaşmakla görevli değilseniz, o zaman yapmayın. Aksi takdirde, eğer bir öğrenciyseniz veya genel olarak vaktiniz varsa, programları sökmeyi öğrenmeyi ve derleyiciden daha iyi bir çözüm bulup bulamayacağımı öğrenmeyi zaman bulurdum. Yapamazsam, kimin umrunda! Derleyicinin yanı sıra nasıl yazılacağını da öğrendim ve bu büyük bir artı, sürüm kodunda (hata ayıklama sembolleri olmayan) bir hatayla karşılaştığınızda ve sökme işlemine bakarken, bakabileceğiniz tek şey bu.
Cevap
Bu, optimizasyonlar hakkında bilgi edinmek için bulduğum en iyi kaynaklardan biri.
http://www.agner.org/optimize/
Rant
Bazı geliştiricilerin bazı makalelerini okursanız (örneğin, EASTL’in yapılmasının arkasındaki gerekçeler ve kodun daha yakından incelenmesi, GCC'nin size söyleyeceği ifadenin içindekiler için korkunç olduğu için, bunun gibi yorumlara yol açacaktır . insanlar derleyicinin her zaman doğru olmadığına, özellikle de oyun geliştirmede güvende olduğunu söylüyorlar ) ve daha sonra sektöre ayak bastığında optimizasyonların günlük bir şey olduğunu ve montaj çıktısının ne kadar büyük olduğunu bilmek olduğunu göreceksiniz. Ayrıca, insanlar (özellikle stackoverflow'ta) oyun oynamanın çok zor ve her zaman doğru olmadığının farkında değiller.
Yine de bir uyarı var. Bir şeyi optimize etmek için zaman harcayabilir ve daha sonra zamanın boşa gittiğini fark edebilirsiniz. Ama ne öğrendin? Aynı hatayı benzer durumlarda tekrar etmemeyi öğrendin.
Ne SO şimdi alıyor bence açıklamaya dini duruşu optimize sen profil yok dek ve endişe yok, derleyici senden daha iyi bilir . Öğrenmeyi engelliyor. Endüstrinin oyunu optimize etmek ve hata ayıklamak için etrafta dolaşması için çok iyi para ödenen (ve çok iyi para demek istiyorum) sektördeki uzmanları tanıyorum, çünkü derleyici kötü ya da basitçe size yardımcı olamıyor çünkü olamaz (GPU ile ilgili çökmeler, ilgili verilerin bir hata ayıklayıcıda okunmasının imkansız olduğu çökmeler vb.)!
Bunu yapmayı seven, henüz henüz tam olarak anlamadıysanız, soruyu burada sorar ve derleyicinin sizden daha iyi bildiği birçok cevap tarafından kapatılıp kapatılırsa ? ve asla bu yüksek ücretli programcılardan biri olmaz mı?
Son bir düşünce. Bunu daha erken yapmaya başlarsanız, yakında en kötü ihtimalle kod yazmaya başlayacağınızı, derleyicinin aynı şekilde optimize ettiği ya da en iyi ihtimalle bazı performans iyileştirmeleri içerdiğini göreceksiniz, çünkü derleyici bunu en iyi duruma getirebilir . Her iki durumda da, alışkanlık haline geldi ve bu şekilde kod yazarken daha önce yaptığınızdan daha yavaş değilsiniz. Birkaç örnek (daha birçok var):
- Gerçekten artış sonrası istemediğiniz sürece ön artırma
- Döngü içindeki kabın üzerinde çağrılan boyut () yerine sabit bir yerel boyut değişkeni kullanan kaplar için döngü yazma.
EDIT: Sektörde 8 yıl sonra güncelleme. Montajı öğren. Optimize edicilerin nasıl çalıştığını ve ürettikleri montajı öğrenin (CompilerExplorer bunun için harika bir araçtır). Test derlemelerinde (dahili testler için optimize edilmiş derlemeler) sayısız çöküşle karşılaştım, hata ayıklayıcısına hata ayıklama sembolleriyle bile güvenemezsiniz. Derleyici çok fazla şeyi optimize etti ve derleme, çökme çöplüğündeki hatayı bulmak için tek değerli bilgi kaynağınız. Şanslıysanız ve önce yapı kuyruğundaysanız, her derleme 30-40 dakika sürer; bu nedenle, hatayı izole etmek için bazı geleneksel tekniklere güvenemezsiniz. Çok oyunculu işleri daha da kötüleştirir. Montajı ve optimize edilmiş montajın nasıl okunacağını bilmek sizi daha iyi ve sonuçta takım için daha değerli hale getirecektir.