Performans açısından kritik öneme sahip alanlarda çalışıyorsanız, verimliliği sonradan düşünülemez. Bu durumlarda erken tasarım yaparken ve nihai sonucun sürdürülebilirliği ile ilgili şekillerde düşünülmesi gereken en kritik şeylerden biridir.
Büyük ölçekli bir sunucu tasarlayamaz ve uygulayamazsınız ve sadece her bir istemci isteğini işlemeden işlemek için tüm sistemi kilitleyen küresel bir iş parçacığı kilidiyle her şey için engelleme işlevlerini kullanan kolay, iyi belgelenmiş bir kod yazmaya başlayabilirsiniz. paylaşılan durum, iş parçacığı çekişmesi ve eşzamansızlık hakkında ne düşündüğünü. Bu bir felaket tarifi ve denemenin bir sonucu olarak yarış koşulları ve kilitlenmelerle boğulmuş, bakımı en zor kod tabanına yol açabilecek şekilde yazdığınız güzel belgelenmiş kodun büyük kısmını yeniden tasarlama ve yeniden yazma ihtiyacıdır. sadece verimli, basit, çalışan tasarımları önceden düşünmüş olmanın aksine, gerekli görsellikte verimliliği artırmak.
Bir oyun geliştirme ekibi 8 ay üretime devam ediyor ve motor en yoğun donanımlarında saniyede 2 kare çekiyor ve 32 çekirdekli, aynı zamanda ekran her meşgul olduğunda 15 saniye durma eğilimi gösteriyor. küçük bir yerel hotspot düzeltiyor. Muhtemelen tasarımları, çizim tahtasının destansı bir revizyonunu ve kod tabanının her köşesine yayılabilecek tasarım değişikliklerini garanti edecek şekilde FUBAR olmasıdır.
John Carmack ile bir kez bir teknoloji demosunun üretime entegre edilmesi için saniyede en az yüzlerce ila binlerce kare arasında nasıl çalışması gerektiğini anlattı. Verimlilikle ilgili sağlıksız bir saplantı değil. Müşterilerin kabul edilebilir bulması için oyunların bütünüyle 30+ FPS'de çalışması gerektiğini açıkça biliyor. Sonuç olarak, yumuşak bir gölge sistemi gibi küçük bir özellik 30 FPS'de çalışamaz, aksi takdirde oyun bir bütün olarak gerekli gerçek zamanlı geri bildirimi sağlayacak kadar hızlı olamaz. Bu var kullanışsız gerekli verimi ulaşana kadar ısıtılır. Verimlilik için temel bir gereksinimin olduğu böyle performans açısından kritik alanlarda, yeterli hıza ulaşamayan bir çözüm aslında hiç çalışmayan bir çözümden daha iyi değildir,. Verimliliği konusunda baskın bir düşünce oluşturmadıkça, gerçek zamanlı bir oyun motoru için gereken şekilde saniyede yüzlerce ila binlerce kare hızında çalışan verimli bir yumuşak gölge sistemi tasarlayamazsınız. Aslında, bu gibi durumlarda, işin% 90 + 'ı verimlilik etrafında yönlendirilir, çünkü yol izlemeyi kullanarak kare başına 2 saatte iyi çalışan yumuşak bir gölge sistemi bulmak önemsizdir, ancak ayarlamayı bekleyemezsiniz. yaklaşımda tamamen farklı bir değişiklik olmadan saniyede yüzlerce karede koşmaya.
Verimlilik bir uygulamanın tasarımının temel bir parçası olduğunda, görmezden gelerek tasarruf ettiğinizden çok daha fazla zaman kaybetmeden, gezide verimlilik elde etmeyi bekleyemezsiniz, çünkü arka planda çalışan bir tasarıma ulaşmayı bekleyemezsiniz. Kimse " Tasarım hakkında düşünmeyi ertelemem sorun değil. Sadece kodunuzu iyi bir şekilde belgeleyin ve daha sonra uygun bir tasarım yapabilirsiniz ." Ancak, performans açısından kritik mimarilerde, çok fazla özen göstermez ve etkili tasarımları önceden düşünmezseniz etkili bir şekilde yapıyorsunuz.
Bu, uygulamalarınızı yarasadan mikro ayarlamanız gerektiği anlamına gelmez. Uygulama ayrıntıları için, tasarımın değişmesi gerekmemesi şartıyla ölçümden sonra daha hızlı çözümlere doğru yinelenecek çok yer vardır ve genellikle bu konuda en verimli yol budur. Ancak tasarım düzeyinde, tasarım ve mimarinin en başından itibaren verimlilikle nasıl ilişkili olacağına dair yeterli düşünceyi koymanız gerektiği anlamına gelir.
Buradaki en önemli fark tasarım. Tasarımlar bağımlılıkları biriktirdiği için tasarımlarda tasarımlarda büyük değişiklikler yapmak kolay değildir ve tasarım değişirse bağımlılıklar bozulur. Ve bir tasarımın makul derecede verimli olması veya bazı durumlarda kalitesinin büyük ölçüde verimliliği ile ölçülmesi gereksinimi varsa, sonradan düşünülen olarak uygun bir tasarıma ulaşmayı beklememelisiniz. İster işletim sistemleri ister derleyiciler, video işlemciler veya raytracers veya oyun motorları veya fizik motorları olsun, verimliliğin kalitenin büyük bir yönü olduğu herhangi bir rekabetçi ürünle, verimlilik ve veri sunumları hakkındaki düşünceler en başından beri titizlikle düşünülmüştür. Ve bu gibi durumlarda verimliliği çok fazla düşünmek için erken optimizasyon olmaz. Böyle bir düşünceyi tam olarak en verimli zamanda ortaya koyuyordu,