Mikro optimizasyon - BAD ve Oyun Geliştirme


12

Oyun geliştirmede C / C ++ çok iş uygulamaları C # vardır. C / C ++ devs kod tek bir satır montaj için nasıl tercüme endişe ifade gördük. .NET'te bazıları nadiren IL'ye girer.

C # 'da, "mikro-optimize" kaşlarını çattı, nadir ve genellikle bir zaman kaybı. Bu, oyun geliştirmede böyle görünmüyor.

Bu tutarsızlığı spesifik olarak ne yaratır? Oyunlar sürekli donanım sınırlarını zorluyor mu? Cevabınız evetse, donanım geliştikçe daha üst düzey dillerin oyun endüstrisini devralmasını mı beklemeliyiz?

Ben bir oyun dev lang olarak C # fizibilite hakkında bir tartışma aramıyorum. Bir dereceye kadar yapıldığını biliyorum. Mikro optimizasyona odaklanın. Özellikle, Game Dev vs Applications dev.

GÜNCELLEME
Oyuna göre modern, büyük ölçekli gelişim. EG MMORPG'ler, Xbox, PS3, Wii ...


3
Bir oyun geliştiricisi ve bir uygulama geliştiricisi olarak çalıştım ve farklılıklar tartışıldı. Profil oluşturmadan mikro optimizasyon her ikisinde de kaşlarını çattı. Birçok oyunun çok güçlü gereksinimleri yoktur ve herhangi bir optimizasyon gerekmez. Bazı iş uygulamaları, ortalama 60Hz'lik bir oyundan çok daha katı gereksinimler (örn. Çalışma süresi ve gerçek zamanlı garantiler) gerektirir.
Dave Hillier

1
Ek bir faktör, iş uygulamalarında genellikle donanımı seçebilmenizdir (akıl içinde). Daha fazla işlem gücüne ihtiyacım varsa, sadece başka bir sunucu satın alabilir veya AWS'de daha fazla zaman ödeyebilirim. Oyunlarda en son donanıma ihtiyaç duyulması 60 dolarlık bir oyunu 1.060 dolarlık bir oyun ve ekran kartına dönüştürür. Konsollar için geliştiriyorsanız, donanımı yükseltmek gelecek nesiller için yıllarca beklemek anlamına gelebilir. Daha iyi bir donanım alamadığınızda, bundan daha iyi yararlanmanız gerekir.
Andrew

Yanıtlar:


17

İş Uygulamalarında, CPU her zaman darboğaz değildir. Bir iş başvurusu çoğu zaman bekleyerek geçirir. Örneğin:

  1. veritabanı sorgusundan sonuçlar bekleniyor
  2. Web isteğinin tamamlanmasını bekliyor
  3. kullanıcının UI işlemi yapmasını beklemek

Bu nedenle işleme performansını optimize eden kod çok fazla değer katmaz.

Birincil değerlendirme:

  1. Market zamanı
  2. Basitlik, başka biri kodu anlayabilir ve koruyabilir mi?

6
Veritabanı sorgularını optimize eden kodun büyük ölçüde iş uygulamalarının kullanılabilirliğini artırabileceğini belirtmek isterim.
HLGEM

4
+1. Veritabanı ve Ağ optimizasyonu genellikle iş uygulamasında paranın karşılığını daha fazla verir. Örneğin JSON ve XML seçimi ve DB indekslerinin ayarlanması
Verma

2
+1 ancak denklemin diğer tarafını eklemelisiniz: cadıdaki oyunlarda "ana döngü (ler)" ve render (lar), oyunun akışkanlığına güvenir, her mikrosaniyeyi değer kaybı kaybeder, çünkü kalite algılanabilir göze ve diğer duyulara.
Klaim

1
İyi dedi. Ve aslında, iş uygulamaları ve oyun geliştirme yaptıktan sonra, bir oyunda bir iç döngü üzerinden zaman geçirdiğim gibi, biraz daha fazla performans eklemeye çalışan karmaşık bir SQL sorgusu üzerinden zaman geçirmeye çalıştım.
Carson63000

Her şey erken optimizasyona geri dönüyor , tüm kötülüğün köküdür . Profil oluşturma, ortalama iş uygulamanızda geçirilen zamanın çoğunun ağ + veritabanı G / Ç olduğunu açıkça göstermektedir.
Alex

13

İş uygulamalarında mikrosaniyelerin önemi çok nadirdir. Oyunlarda bu hayatın bir gerçeğidir.

Saniyede 60 kare hızında çalışan bir oyuna sahip olmak istiyorsanız, giriş, fizik, oyun mantığı, ses, ağ, yapay zeka, görüntü oluşturma vb. eğer şanslıysanız, 30 fps'de koşacaksınız ve 33,3 milisaniyelik lüks olacak. Bir çerçeve çok uzun sürerse, yorumlarınız acı çekecek, oyuncularınız internet forumlarını safra ile dolduracak ve olabildiğince çok satmayacaksınız (profesyonel gururunuza darbeden bahsetmiyorum) ve gerçekten şanssızsanız ekibiniz yaşam için iş uygulamalarını kodlar.

Tabii ki, oyun geliştiricileri her satır için endişelenmiyorlar, çünkü deneyim ve iyi bir profilerle, hangi satırların endişelenmesi gerektiğini öğreniyorsunuz. Öte yandan, bu endişeler bazen iş dünyasında mikro optimizasyonlardan ziyade nano optimizasyon olarak kabul edilebilecek şeylere dokunacaktır.

Herhangi bir üst düzey dilin, karşılaştırılabilir ve öngörülebilir bir performans sunana kadar C ++ 'ı kapıdan atmasını beklemeyin.


8
Yüksek frekanslı ticaret uygulamalarında mikrosaniyeler çok önemlidir!
quant_dev

2
@quant: Çoğu akış işleme uygulamasında olduğu gibi - robotik, güç ızgaraları, roketçilik, tıbbi teknoloji, vb.
Aaronaught

@quant_dev: Yüksek frekanslı ticaret uygulamaları olan çok nadir.
molbdnilo

Artık değil. Muhasebe uygulamalarından daha nadirdir, ancak uçak tasarım yazılımından daha yaygındır.
quant_dev

Mikrosaniyeler iş uygulamalarında da önemlidir, darboğaz genellikle başka bir yerde bulunur (ağ genelinde, bir veritabanında veya dosya sisteminde).
RubberDuck

9

Tamam, C ve C ++ geliştiricilerinin münferit çizgilere takıntılı olduğunu gördünüz. Bahse girerim her çizgiye takıntı etmezler.

Maksimum performansı istediğiniz durumlar vardır ve bu birçok oyun içerir. Oyunlar, aynı donanımdaki rakiplerinden daha iyi görünmek için her zaman performans sınırlarını zorlamaya çalıştı. Bu, normal optimizasyon tekniklerinin tümünü uyguladığınız anlamına gelir. Algoritmalar ve veri yapıları ile başlayın ve oradan içeri girin. Bir profil oluşturucu kullanarak, en fazla zamanın nerede alındığını ve birkaç satırın mikro optimizasyonundan önemli kazanımlar elde etmenin mümkün olduğunu bulmak mümkündür.

Bunun nedeni, dillerin insanları buna zorlaması değil, insanların yapmak istediklerine göre dil seçmesidir. Programın son bitini sıkmak istiyorsanız, C # yazmaz ve CLR'ye derlemez ve JIT derleyicisinin (veya her neyse) iyi bir iş çıkardığını ummazsınız, bunu büyük ölçüde kontrol edebileceğiniz bir şeyde yazarsınız. çıktı. C veya C ++ (ve muhtemelen C ++ 'ın sınırlı bir alt kümesini) kullanacak ve derleme dili çıktısını ve profil oluşturucu sonuçlarını inceleyeceksiniz.

C ve C ++ kullanan ve yeterince hızlı olduğu sürece çevirinin ayrıntıları hakkında çok fazla endişelenmeyen birçok insan var.


7

Oyunlar sürekli donanım sınırlarını zorluyor mu?

Evet onlar yapar.

Cevabınız evetse, donanım geliştikçe daha üst düzey dillerin oyun endüstrisini devralmasını mı beklemeliyiz?

Gerçekten değil - donanım geliştikçe tüketiciler oyunların da gelişmesini bekliyor. Geliştiriciler daha üst düzey bir dil kullandıklarından, aynı oyun kalitesinin daha verimli bir şekilde gelişmesini beklemiyorlar. Her yeni platformda çoraplarının havaya uçmasını bekliyorlar.

Tabii ki, bazı hareketler var. Bir delikanlı olduğumda ve ilk olarak oyun geliştirmeyle ilgilendiğimde, el yazısı montajıydı ya da cehennem oldu. Bu Commodore 64 dönemiydi. Günümüzde, elbette, C ++ çoğu oyun geliştirmenin ortak dilidir . Gerçekten de, motor kodu için C ++ kullanmaya ve oyun mantık kodu için daha üst düzey bir komut dosyası dili kullanmaya doğru hareket gördük. örneğin LUA veya Unreal motorunun kendi UnrealScript dili vardır.


1
Bu günlerde oyun geliştiricilerin iyi bir bölümünü + 1'leyin, başkası tarafından yazılmış hiper optimize edilmiş bir motor katmanı kullanın, ardından Python gibi bir şey veya daha az titiz C ++ kullanın.
Morgan Herlocker

Unreal'ın artık komut dizisini “geriye” UnrealScript'ten C ++ 'a taşımıştır. Modern C ++ ile ilgili hem mikro optimize edilmiş düşük gecikmeli kodu hem de özlü üst düzey mantığı yazmanıza izin veren harika bir şey. Diğer birçok dil, yalnızca gecikme ve genellikle performanstan ödün vererek üst seviyeye ulaşır.
leftaroundabout

7

C # 'da, "mikro-optimize" kaşlarını çattı, nadir ve genellikle bir zaman kaybı. Bu, oyun geliştirmede böyle görünmüyor.

Uygulamanızı yalnızca üst düzey kod ve kitaplık koduyla bir araya getirebiliyorsanız, zaman kaybı olduğundan emin olun. Bu durumda yorumlanmış bir dilde yazın; çok fazla fark yaratmayacak. Dinamik sahne içeriğini anında CryEngine 3'ün yaptığı gibi gerçek zamanlı olarak seslendiren en yeni global aydınlatma motorunu uygulamaya çalışıyorsanız , doğal olarak mikro optimizasyon ihtiyacından uzaklaşamazsınız.


0

"Oyun" oldukça kapsayıcı bir terimdir. Diyelim ki bir MMORPG olsaydınız, daha küçük optimizasyonlar birçok oyuncuyu etkileyecektir.

Oyuncular, gerçek zamanlı olarak, aynı anda gerçekleşen nispeten büyük miktardaki şeylere alışkındır ve muhtemelen her zaman kullanılmıştır. Elbette; bir zamanlar, duyarlı bir Pacman veya Tetris'e sahip olmak hedefti. Ama yine de duyarlı olmaları gerekiyordu. Günümüzde, paket bırakan ağ bağlantıları üzerinden 3DMMORPG'ler.

Ben kesinlikle optimize etmek istiyorum anlamak.



0

Her zaman "mikro-optimizasyon" terimini oldukça belirsiz buldum. Bellek düzeninde ve erişim düzenlerinde bazı talimat düzeyinde değişiklikler, disiplinli bir profesyonelden sıcak noktalarını algoritmik karmaşıklıkta bir azalma olmadan ölçen 80 kat daha hızlı bir şey yaparsa, bu bir "mikro optimizasyon" mudur? Bana göre bu, gerçek dünyadaki kullanım durumunda 80 kat daha hızlı bir şey yapmak için kullanılan bir "mega optimizasyon". İnsanlar bu tür optimizasyonların mikroskobik etkileri olduğu gibi bunlar hakkında konuşma eğilimindedir.

Artık gamedev'de çalışmıyorum ama yol izleme gibi alanlarda VFX'de çalışıyorum ve karmaşık bir sahnede saniyede ~ 0,5 milyon ışın işleyen BVH ve KD ağaçlarının birçok uygulamasını gördüm (ve bu, çok iş parçacıklı değerlendirme). Kabaca konuşmak gerekirse, çok iş parçacıklı değerlendirme ile bile 1 milyon ışın / sn'nin altındaki ışın izleme bağlamında bir BVH'nin basit bir uygulamasını görme eğilimindeyim. Embree hariç aynı sahnede aynı donanım ile 100 milyondan fazla ışın işleyebilen bir BVH'ye sahiptir.

Bu tamamen Embree'nin 200 kat daha hızlı (aynı algoritma ve veri yapısı) olduğu "mikro-optimizasyonlardan" kaynaklanıyor, ancak elbette çok daha hızlı olmasının nedeni, arkasındaki Intel'deki geliştiricilerin profilerlerine ve ölçümlerine ve gerçekten önemli olan alanları ayarladım. Onlar önsezi dışında willy-nilly kodunu değiştirmediler ve değişiklikleri önemli ölçüde düşüren sürdürülebilirlik pahasına% 0.000000001 iyileştirmeler yaptılar. Bunlar, akılcı ellerde uygulanan çok hassas optimizasyonlardır - odak açısından mikroskopik, etki açısından makroskopik olabilirler.

Doğal olarak, oyun motoruyla ne kadar yüksek veya düşük seviyede çalıştığınıza bağlı olarak oyunların gerçek zamanlı kare hızı gereksinimleriyle (UE 4 ile yapılan oyunlar bile en azından kısmen yüksek seviye komut dosyasında uygulanır, ancak, fizik motorunun en kritik kısımları değil), mikro optimizasyonlar belirli alanlarda pratik bir gereklilik haline gelir.

Bizi her gün çevreleyen bir diğer temel alan, yüksek çözünürlüklü görüntüleri gerçek zamanlı olarak bulanıklaştırmak ve belki de muhtemelen bir yerde gördüğümüz bir geçişin bir parçası olarak, belki de bir OS etkisi gibi görüntü işleme. Bu tür görüntü işlemlerini sıfırdan bir görüntünün tüm pikselleri arasında döngüden yürütmek ve bu gibi gerçek zamanlı sonuçları eşleşen kare hızlarında bekleyemezsiniz. CPU ise, genellikle SIMD'ye ve bazı mikro ayarlara bakıyoruz veya etkili bir şekilde yazmak için mikro düzeyde bir zihniyet gerektiren eğilimli GPU gölgelendiricilerine bakıyoruz.

Cevabınız evetse, donanım geliştikçe daha üst düzey dillerin oyun endüstrisini devralmasını mı beklemeliyiz?

Donanım gelişmelerinin bunu yapabileceğinden şüpheliyim, çünkü donanım ilerledikçe, talimatlar ve teknoloji de (ör: GPU'da fizik) ve teknikler ve görmek istedikleri şey ve rekabet için müşteri beklentileri de web geliştiricilerinin artık WebGL'de düşük seviyeli GLSL gölgelendiricileri yazdığı gibi, genellikle geliştiricilerin tekrar düşük seviyeye gitme yolları (bu türden web geliştirme, muhtemelen on veya iki yıl öncesine göre daha düşük seviyededir) GLSL son derece düşük seviyeli C benzeri bir dildir ve bazı web geliştiricilerinin böyle düşük seviyeli GPU gölgelendiricileri yazmayı kucaklayacağını asla tahmin edemezdim.

Performans açısından kritik alanların daha üst düzey dillere geçmesi için bir yol olacaksa, gördüğüm yazılım ve derleyicilerden ve araçlardan daha fazla gelmek zorunda kalacak. Öngörülebilir bir gelecekte benim için sorun, donanımın yeterince güçlü olmaması değil. Kendi diline geri dönmeden her değiştiğinde ve ilerlediğinde onunla en etkili şekilde konuşmanın yollarını nasıl bulamayacağımızla daha fazla ilgilidir. Aslında, gördüğüm gibi, bu alanlar için yüksek seviyeli programlamayı oldukça zorlaştıran donanımın değiştiği hızlı tempo, çünkü varsayımsal olarak donanımımız önümüzdeki on yıllar boyunca maviden ilerlemeyi bıraktıysa,

Bugünlerde, performans açısından kritik öneme sahip alanlarda çalıştığım zaman, (Borland Turbo C DOS döneminde başlamış olmama rağmen) başladığımdan biraz daha düşük seviyede düşünmek zorundayım. Çünkü o zamanlar CPU önbelleği neredeyse yoktu. Çoğunlukla sadece DRAM ve kayıtlardı, bu da algoritmik karmaşıklığa daha fazla odaklanabileceğim ve ağaçlar gibi bağlantılı yapıları çok fazla performans göstermeden çok basit bir şekilde yazabileceğim anlamına geliyordu. Bu günlerde CPU önbelleğinin düşük düzeyli ayrıntıları, neredeyse algoritmanın kendisi kadar benim düşünceme hakim. Aynı şekilde, çok iş parçacıklı ve atomik ve muteksler ve iş parçacığı güvenliği ve eşzamanlı veri yapıları vb. insani sezgisel değil).

İşin garibi şu an benim için çok doğru görünüyor. Sanırım bugün donanımın altta yatan ve düşük seviyeli karmaşıklıklarından ve ayrıntılarından 30 yıl önce olduğundan daha fazla etkilendim ve nostalji gözlüklerini çıkarmak için elimden gelenin en iyisini yapmaya çalışıyorum. Tabii ki burada biraz montajdan söz etmiş olabiliriz ve XMS / EMS gibi bazı ayrıntılarla uğraşmak zorunda kalabilirdik. Ancak çoğunlukla, performans açısından kritik alanlarda çalışırken bugüne kadar ihtiyacım olandan daha az karmaşıklık ve donanım ve derleyici farkındalığı olduğunu söyleyebilirim. Ve yazmak gibi bir kenara bırakırsak, bu neredeyse tüm endüstri için doğru görünüyorif/else ifadelerini biraz daha insanca okunabilir bir şekilde okuyun ve bu günlerde genel olarak ne kadar insanın donanımın daha düşük düzey ayrıntıları hakkında daha fazla düşündüğünü düşünün (birden fazla çekirdekten GPU'lara, SIMD'den CPU önbelleğine ve derleyicilerinin / yorumlayıcılarının / kütüphaneler çalışır vb.).

Yüksek Seviye! = Daha Az Verimli

Bu soruya dönersek:

Cevabınız evetse, donanım geliştikçe daha üst düzey dillerin oyun endüstrisini devralmasını mı beklemeliyiz?

Benim için bu donanım ile ilgili değil. Optimize ediciler ve araçlar hakkında. Başladığımda insanlar tüm konsol oyunlarını montajda yazdılar ve özellikle 6502 üreten kaliteli derleyicilerin eksikliği göz önüne alındığında gerçek bir performans avantajı vardı.

Optimizasyon C derleyicileri optimizasyonlarında daha akıllı hale geldiklerinde, C'de yazılan daha yüksek seviyeli kodun rakip olduğu ve bazen de her zaman olmasa da en iyi montaj uzmanları tarafından yazılan koddan daha iyi performans gösterdiği bir noktaya ulaşmaya başladılar ve bu nedenle, en azından bir oyun kodlamasının büyük kısmı için C'yi benimsemek bir beyinsizdi. Ve benzer bir değişim C ++ ile bir noktada yavaş yavaş oldu. C ++ benimsemesi daha yavaştı çünkü meclisten C'ye gitmenin verimlilik artışı, C'den C ++ 'ya gitmekten ziyade tamamen ASM'de önemsiz oyunlar yazan gamedev'lerden oybirliğiyle anlaşmaya varabileceğini düşünüyorum.

Ancak bu değişimler, donanımın daha güçlü hale gelmesinden kaynaklanmadı, çünkü bu diller için optimize ediciler daha düşük seviyeye gitmeyi büyük ölçüde (her zaman tamamen olmasa da, bazı belirsiz durumlar var) geçersiz kılıyor.

Çoklu iş parçacığı veya GPU'lar veya önbellek özledikleri veya bunun gibi herhangi bir şey (belki de belirli veri yapıları bile değil) ile ilgili hiçbir endişe olmadan, akla gelebilecek en üst düzey kodda kod yazabileceğimiz varsayımsal bir senaryo hayal edebiliyorsanız ve optimize edici yapay zeka gibiydi. akıllıdır ve verilerimizi yeniden düzenleyen ve düzenleyen en verimli bellek düzenlerini çözebilir, burada ve orada bazı GPU'ları kullanabileceğini, burada bazı kodları paralelleştirebileceğini, bazı SIMD kullanacağını, belki de profilin kendisini ve IR'yi insanlar olarak daha da optimize edebileceğini anlayabilir profiler hotspot'larına yanıt veriyor ve bunu dünyanın en iyi uzmanlarını yenecek şekilde yaptı, o zaman bunu benimsemek için en kritik performans alanlarında çalışanlar için bile beyinsiz olurdu ... ve bu bir gelişme gülünç akıllı optimize edicilerden geliyor, daha hızlı donanım değil.


0

C # 'da, "mikro-optimize" kaşlarını çattı, nadir ve genellikle bir zaman kaybı. Bu, oyun geliştirmede böyle görünmüyor.

Burada bir terminoloji probleminiz var. Kelimeleri doğru kullanıyorsunuz, ancak oyun geliştiricileri ve iş adamları aynı terimi iki farklı şekilde kullanıyorlar.

İşletmeler için "mikro optimizasyon", yazılım tarafından uygulanan genel iş sürecinde çok küçük bir adımın hızlandırılması anlamına gelir. Kaşlarını çatmasının nedeni genellikle şunlardan biridir:

  1. Aynı iş değerini, birkaç saniye daha hızlı bir şekilde sunarak harcanan ekstra para. Hız iyileştirmelerinde tasarruf edilen para, farklı bir para havuzundan (kullanıcının zamanı) gelir, böylece işletme genellikle harcadığı çabadan faydalanmaz, müşteri işletme pahasına yararlanır.
  2. Tipik olarak, iş programcıları genel iş sürecinde kötü bir görünüme sahiptir, bu nedenle tek bir adımın optimizasyonu, genel sürece iyi faydalar sağlamayabilir. Örneğin, işlemin% 3'ünü 10 kat daha hızlı yaparsanız, tüm işlemi% 2.7 hızlandırmış olursunuz.
  3. Genellikle işletme, bazı işletme değerine sahip geniş bir geri kalan çalışma listesine sahiptir ve (muhtemelen) daha küçük bir sürede aynı değeri sunmak yerine bu değeri eklemeye öncelik verir.

Oyun geliştirme farklı bir canavardır. "mikro optimizasyon" bir fonksiyonda veya rutinde az zaman tasarrufu sağlar.

  1. Oyun sistemleri oluşturma döngüsünde tutulma eğilimindedir. Şu anda altın standart saniyede 60 kare olduğundan, hesaplanacak her şeyin saniyenin 1 / 60'ında ekrana getirilmesi ve sunulması gerekiyor.
  2. Bu, bir oyun boyunca aynı rutinlere binlerce ila yüz binlerce kez denir anlamına gelir. Böylece, tek bir fonksiyondaki 10x'lik bir iyileşme, iyileştirmenin faydalarının hissedilme sayısı kadar değer olarak büyütülür.
  3. Renderleme oranının sağlanamaması oyunun sunumuna etki eder. Video dalgalı hale gelecek, karakterler sıvı hareketi yerine atlama ve atlamalarla canlanacak. Bu, oyuncuyu hemen oyunun içine daldırır ve oyunun değerini sorgulama alanına getirir.

Bu yüzden iş dünyasında, hiç kimse 4 adımlı bir iş süreci formunun 0,6 saniye veya 0,5 saniye içinde sunulup sunulmadığını umursamıyor. Oyun oynarken, 200 ms süren bir rutinin 100 ms içinde yürütmeye indirilip indirilemeyeceğini umursar.

Her şey müşteriye sunulan değer, müşterinin ihtiyaçları ve değişikliğin maliyet-fayda oranı ile ilgilidir.


-1

Bu aracın belirli bir iş için neden seçildiğiyle ilgilidir.

Golfçüler, sürücüyü kullandıklarında değil, bir atıcı ile uyguladıkları yön ve kuvvet konusunda takıntılı olacaklar.

Neden? Çünkü bunlar farklı türden çekimler. Bir sürüş için, onu maksimum mesafe ile fairway'e almak istersiniz. Bir putt için, tam olarak deliğe almak istersiniz.

Burada da aynı şey geçerlidir. Oyun geliştiricileri farklı işlemlerin performansı üzerinde kontrol sahibi oldukları için C ++ 'ı seçerler. Bunu seçtiyseniz, kaldıraç kullanmak istersiniz.


-3

İş uygulamalarının çoğu şirket içi araçlar olarak yazılır. Bu araçların kullanılabilirliğine ilişkin beklentiler, toplu müşterilere satılan yazılımlardan çok daha düşüktür. Bir şirket içi iş uygulamasının, fare tıklamalarına, gecikmeli olarak yeniden çizilen pencerelere ve hatta Swing'de (korku!) Yazılmış bir GUI'ye yavaş tepki veren menüler ve iletişim kutularına sahip olması oldukça yaygındır. Bu bir dizi nedenden dolayı (yazılımın çok "çabuk" olduğundan daha özelleştirilebilir olması önemlidir, yazılım kullanıcılarının söz konusu yazılımı kullanıp kullanmamaları, yazılımı yükleme kararı kendileri kullanmayın ...). Tüm bunların sonucu, bu araçların geliştiricilerinin uygulamanın yanıt verme hızını optimize etmek için fazla zaman harcamamasıdır. ancak özelliklerin genişletilebilirliği ve sayısı konusunda çok dikkatli olun. Farklı müşteri tabanı => farklı tasarım hedefleri => farklı metodoloji.

Excel gibi kitle kitlesini hedefleyen bir işletme uygulamasının yoğun şekilde optimize edildiğini unutmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.