Mikro-mengoptimalkan - BAD vs Game Development

12

Dalam pengembangan game ada banyak C / C ++, dalam aplikasi bisnis C #. Saya telah melihat C / C ++ devs menyatakan keprihatinan atas bagaimana satu baris kode diterjemahkan menjadi assembly. Dalam. NET beberapa masuk ke IL, jarang.

Dalam C #, "mengoptimalkan mikro" disukai, jarang dan biasanya buang-buang waktu. Ini tampaknya tidak menjadi kasus dalam pengembangan game.

Apa yang secara spesifik menciptakan ketidakkonsistenan ini? Apakah game terus mendorong batas perangkat keras? Jika ya, seiring dengan peningkatan perangkat keras haruskah kita mengharapkan bahasa tingkat lebih tinggi untuk mengambil alih industri game?

Saya tidak mencari perdebatan tentang kelayakan C # sebagai game dev lang. Saya tahu ini sudah dilakukan sampai taraf tertentu. Fokus pada Mikro-optimasi. Secara khusus, perbedaan antara Game Dev vs Aplikasi dev.

UPDATE
By Game Maksud saya modern, pengembangan berskala besar. EG MMORPG, Xbox, PS3, Wii ...

P.Brian.Mackey
sumber
3
Saya telah bekerja sebagai pengembang game dan pengembang aplikasi dan perbedaannya masih bisa diperdebatkan. Optimalisasi mikro tanpa membuat profil disukai di keduanya. Banyak game yang tidak memiliki persyaratan yang sangat kuat dan tidak memerlukan optimasi apa pun. Beberapa aplikasi bisnis membutuhkan persyaratan yang jauh lebih ketat (mis. Jaminan waktu aktif dan waktu nyata) daripada game 60Hz rata-rata.
Dave Hillier
1
Salah satu faktor tambahan adalah bahwa dalam aplikasi bisnis, Anda biasanya dapat memilih perangkat keras (dengan alasan). Jika saya membutuhkan lebih banyak kekuatan pemrosesan, saya bisa membeli server lain, atau membayar lebih banyak waktu di AWS. Dalam gim, membutuhkan perangkat keras terbaru mengubah gim $ 60 menjadi gim dan kartu video $ 1.060. Jika Anda mengembangkan konsol, memperbarui perangkat keras mungkin berarti menunda selama bertahun-tahun menunggu generasi berikutnya. Ketika Anda tidak bisa mendapatkan perangkat keras yang lebih baik, Anda harus memanfaatkannya dengan lebih baik.
Andrew

Jawaban:

17

Dalam Aplikasi Bisnis, CPU tidak selalu menjadi penghambat. Aplikasi bisnis akan menghabiskan sebagian besar waktu menunggu. Misalnya:

  1. menunggu hasil dari permintaan basis data
  2. menunggu permintaan Web selesai
  3. menunggu pengguna membuat tindakan UI

Itulah sebabnya kode yang mengoptimalkan kinerja pemrosesan tidak menambah nilai terlalu banyak.

Pertimbangan utama adalah:

  1. Saatnya ke pasar
  2. Kesederhanaan, bisakah orang lain memahami dan memelihara kode tersebut
Shamit Verma
sumber
6
Saya akan menunjukkan bahwa kode yang mengoptimalkan kueri basis data dapat sangat meningkatkan kegunaan aplikasi bisnis.
HLGEM
4
+1. Pengoptimalan database dan jaringan biasanya akan memberikan lebih banyak manfaat dalam aplikasi bisnis. Misalnya pilihan JSON vs XML dan menyetel indeks DB
Shamit Verma
2
+1 tetapi Anda harus menambahkan sisi lain dari persamaan: "loop utama (s)" dan rendering (s) dalam game di penyihir fluiditas permainan bergantung pada membuat setiap mikrodetik kehilangan kehilangan nilai, karena kualitas terlihat ke mata dan indera lainnya.
Klaim
1
Kata baik. Dan memang, setelah melakukan aplikasi bisnis dan pengembangan game, saya telah menghabiskan waktu meneliti query SQL yang kompleks mencoba untuk meningkatkan kinerja, sama seperti saya telah menghabiskan waktu meneliti loop dalam permainan.
Carson63000
Semuanya kembali ke optimasi prematur adalah akar dari semua kejahatan . Profiling dengan jelas mengungkapkan bahwa sebagian besar waktu yang dihabiskan dalam aplikasi bisnis rata-rata Anda adalah jaringan + basis data IO.
Alex Reinking
13

Dalam aplikasi bisnis, sangat jarang mikrodetik penting. Dalam game, itu adalah fakta kehidupan.

Jika Anda ingin permainan berjalan pada 60 frame per detik, Anda memiliki ~ 16,67 milidetik untuk melakukan semua yang perlu dilakukan untuk frame itu - input, fisika, logika gameplay, audio, jaringan, AI, rendering, dan sebagainya; jika Anda beruntung, Anda akan berlari pada 30 fps dan memiliki 33,3 milidetik yang mewah. Jika bingkai terlalu lama, ulasan Anda akan menderita, pemain Anda akan mengisi forum internet dengan empedu dan Anda tidak akan menjual sebanyak yang Anda bisa (belum lagi pukulan ke kebanggaan profesional Anda) dan jika Anda benar - benar beruntung Anda akan menemukan tim Anda mengkode aplikasi bisnis untuk mencari nafkah.

Tentu saja, pengembang game tidak khawatir tentang setiap baris karena, dengan pengalaman dan profiler yang baik, Anda belajar garis mana yang perlu dikhawatirkan. Di sisi lain, kekhawatiran itu terkadang akan menyentuh hal-hal yang di dunia bisnis mungkin akan dianggap sebagai optimasi nano daripada optimasi mikro.

Jangan berharap bahasa tingkat tinggi apa pun akan menendang C ++ keluar sampai ada yang menawarkan kinerja yang sebanding dan dapat diprediksi.

molbdnilo
sumber
8
Dalam aplikasi perdagangan frekuensi tinggi, mikrodetik sangat penting!
quant_dev
2
@quant: Seperti kebanyakan aplikasi pemrosesan aliran - robotika, jaringan listrik, peroketan, teknologi medis, dll. Membangun terlalu banyak tumpukan dan mungkin sudah terlambat pada saat Anda mengejar ketinggalan.
Aaronaught
@quant_dev: aplikasi perdagangan frekuensi tinggi yang sangat langka.
molbdnilo
Tidak lagi. Mereka lebih jarang daripada aplikasi akuntansi, tetapi lebih umum daripada, katakanlah, perangkat lunak desain pesawat.
quant_dev
Masalah mikrodetik dalam aplikasi bisnis juga, kemacetan biasanya hanya ditemukan di tempat lain (di seluruh jaringan, dalam database atau sistem file).
RubberDuck
9

Oke, jadi Anda telah melihat pengembang C dan C ++ terobsesi pada jalur individual. Saya berani bertaruh mereka tidak terobsesi pada setiap baris.

Ada kasus di mana Anda menginginkan kinerja maksimum, dan ini termasuk banyak permainan. Game selalu berusaha untuk mendorong batas kinerja, agar terlihat lebih baik daripada pesaing mereka pada perangkat keras yang sama. Ini artinya Anda menerapkan semua teknik optimasi yang biasa. Mulailah dengan algoritma dan struktur data, dan pindah dari sana. Dengan menggunakan profiler, dimungkinkan untuk menemukan di mana waktu yang paling banyak diambil, dan di mana dimungkinkan untuk mendapatkan keuntungan yang signifikan dari pengoptimalan mikro beberapa baris.

Ini bukan karena bahasa memaksa orang ke dalamnya, itu karena orang memilih bahasa berdasarkan apa yang ingin mereka lakukan. Jika Anda ingin memeras sedikit kinerja terakhir dari suatu program, Anda tidak akan menulis C # dan mengkompilasi ke CLR dan berharap kompiler JIT (atau apa pun) melakukan pekerjaan dengan baik, Anda menulisnya dalam sesuatu yang sebagian besar dapat Anda kendalikan hasil. Anda akan menggunakan C atau C ++ (dan mungkin subset terbatas C ++) dan mempelajari output bahasa assembly dan hasil profiler.

Ada banyak orang yang menggunakan C dan C ++ dan tidak terlalu khawatir tentang detail terjemahan, asalkan tampaknya cukup cepat.

David Thornley
sumber
7

Apakah game terus mendorong batas perangkat keras?

Ya mereka melakukanya.

Jika ya, seiring dengan peningkatan perangkat keras haruskah kita mengharapkan bahasa tingkat lebih tinggi untuk mengambil alih industri game?

Tidak juga - karena seiring dengan peningkatan perangkat keras, konsumen mengharapkan game juga meningkat. Mereka tidak berharap untuk melihat kualitas permainan yang sama dikembangkan lebih efisien karena pengembang menggunakan bahasa tingkat yang lebih tinggi. Mereka berharap kaus kaki mereka akan meledak oleh setiap platform baru.

Tentu saja, ada beberapa gerakan. Ketika saya masih kecil dan pertama kali tertarik dalam pengembangan game, itu adalah tulisan tangan, atau keluar. Ini adalah era Commodore 64. Saat ini, tentu saja, C ++ adalah lingua franca dari sebagian besar pengembangan game. Dan memang, kami bahkan telah melihat gerakan ke arah menggunakan C ++ untuk kode mesin dan bahasa skrip tingkat tinggi untuk kode logika game. misalnya LUA, atau mesin Unreal memiliki bahasa UnrealScript sendiri.

Carson63000
sumber
1
Memberi +1 sebagian besar permainan devs akhir-akhir ini menggunakan lapisan engine yang dioptimalkan oleh orang lain, lalu gunakan sesuatu seperti Python, atau C ++ yang kurang teliti untuk membungkus semuanya.
Morgan Herlocker
Relevan untuk dicatat bahwa Unreal sekarang telah memindahkan skripnya “mundur”, dari UnrealScript ke C ++. Ini adalah hal yang hebat tentang C ++ modern yang memungkinkan Anda untuk menulis kode latensi rendah yang dioptimalkan secara mikro, dan logika tingkat tinggi yang ringkas. Sebagian besar bahasa lain hanya mencapai level tinggi dengan mengorbankan latensi dan seringkali juga kinerja.
leftaroundtentang
7

Dalam C #, "mengoptimalkan mikro" disukai, jarang dan biasanya buang-buang waktu. Ini tampaknya tidak menjadi kasus dalam pengembangan game.

Jika Anda bisa merakit aplikasi Anda dengan kode tingkat tinggi dan kode pustaka, yakin itu membuang-buang waktu. Tulis dalam bahasa yang ditafsirkan jika Anda ingin dalam kasus itu; tidak akan membuat banyak perbedaan. Jika Anda mencoba menerapkan mesin penerangan global mutakhir yang menguapkan konten adegan dinamis dengan cepat secara real-time seperti yang dilakukan CryEngine 3 , Anda tentu saja tidak dapat melepaskan diri dari kebutuhan untuk mengoptimalkan mikro.


sumber
0

"Game" adalah istilah yang cukup lengkap. Jika Anda memiliki, katakanlah, MMORPG, optimisasi yang lebih kecil akan memengaruhi banyak pemain.

Gamer, dan mungkin selalu, terbiasa dengan sejumlah besar hal yang terjadi sekaligus, secara realtime. Tentu; pada suatu waktu, memiliki Pacman atau Tetris yang responsif adalah tujuannya. Tetapi mereka masih harus responsif. Sekarang, 3DMMORPG melalui koneksi jaringan yang menjatuhkan paket.

Saya yakin paham ingin mengoptimalkan.

Jonta
sumber
0

Game terus-menerus melakukan pemrosesan latar belakang dalam jumlah besar. Aplikasi bisnis tidak.

pengguna16764
sumber
4
Jangan melakukan banyak aplikasi bisnis, bukan?
HANYA SAYA PENDAPAT benar
2
Cukup untuk mengetahui bahwa aplikasi bisnis tidak perlu memperbarui statusnya 60 kali per detik. Selanjutnya, saya secara khusus mengatakan "terus-menerus."
user16764
2
Pernah mendengar tentang perdagangan real-time?
HANYA SAYA PENDAPAT benar
0

Saya selalu menemukan istilah, "optimasi mikro", agak ambigu. Jika beberapa perubahan tingkat instruksi ke tata letak memori dan pola akses membuat sesuatu 80 kali lebih cepat dari seorang profesional yang disiplin mengukur hotspot mereka tanpa pengurangan kompleksitas algoritmik, apakah itu "optimasi mikro"? Bagi saya itu adalah "mega-optimasi" untuk membuat sesuatu yang 80 kali lebih cepat pada kasus penggunaan dunia nyata. Orang-orang cenderung membicarakan hal-hal ini seperti optimisasi semacam itu memiliki efek mikroskopis.

Saya tidak lagi bekerja di gamedev tapi saya bekerja di VFX di bidang-bidang seperti penelusuran jalur, dan saya telah melihat banyak implementasi pohon-pohon BVH dan KD di luar sana yang memproses ~ 0,5 juta sinar per detik pada pemandangan yang kompleks (dan ini dengan evaluasi multithreaded). Secara kasar saya cenderung melihat implementasi langsung dari BVH dalam konteks raytracing di bawah 1 juta sinar / detik bahkan dengan evaluasi multithreaded. Kecuali Embree memiliki BVH yang dapat memproses lebih dari 100 juta sinar pada adegan yang sama dengan perangkat keras yang sama.

Itu sepenuhnya karena "optimasi mikro" bahwa Embree adalah 200 kali lebih cepat (algoritma dan struktur data yang sama), tetapi tentu saja alasannya jauh lebih cepat adalah karena pengembang di Intel di belakangnya adalah para profesional yang bersandar pada profiler dan pengukuran mereka dan benar-benar mengetahui area yang penting. Mereka tidak mengubah kode mau tak mau dari firasat dan melakukan perubahan yang membuat peningkatan 0,000000001% dengan biaya pemeliharaan yang merendahkan secara signifikan. Ini adalah optimasi yang sangat tepat diterapkan di tangan yang bijaksana - mereka mungkin mikroskopis dalam hal fokus tetapi makroskopis dalam hal efek.

Biasanya dengan persyaratan frame rate waktu-nyata dari game, tergantung pada seberapa tinggi atau rendah level Anda bekerja dengan mesin game (bahkan game yang dibuat dengan UE 4 sering diimplementasikan setidaknya sebagian dalam skrip tingkat tinggi, tetapi tidak, katakanlah, bagian paling kritis dari mesin fisika), optimasi mikro menjadi persyaratan praktis di bidang tertentu.

Area lain yang sangat mendasar yang mengelilingi kita setiap hari adalah pemrosesan gambar, seperti mengaburkan gambar beresolusi tinggi secara real-time dan mungkin melakukan efek lain pada mereka sebagai bagian dari transisi yang mungkin kita semua pernah lihat di suatu tempat, bahkan mungkin efek OS. Anda tidak dapat serta merta mengimplementasikan operasi gambar seperti itu dari perulangan awal melalui semua piksel gambar dan mengharapkan hasil waktu-nyata seperti itu pada kecepatan bingkai yang cocok. Jika itu CPU, kita biasanya melihat SIMD dan beberapa tuning mikro, atau kita melihat GPU shaders yang cenderung membutuhkan semacam pola pikir tingkat mikro untuk menulis secara efektif.

Jika ya, seiring dengan peningkatan perangkat keras haruskah kita mengharapkan bahasa tingkat lebih tinggi untuk mengambil alih industri game?

Saya agak meragukan kemajuan perangkat keras saja yang dapat melakukan itu, karena seiring dengan kemajuan perangkat keras, demikian pula instruksi dan teknologi (mis: fisika pada GPU), dan teknik, serta harapan pelanggan untuk apa yang ingin mereka lihat, dan persaingan, dalam cara yang sering membuat pengembang kembali ke level rendah, seperti halnya pengembang web sekarang menulis shader GLSL tingkat rendah di WebGL (pengembangan web semacam ini bisa dibilang bahkan lebih rendah daripada level satu atau dua dekade lalu, karena GLSL adalah bahasa tingkat C yang sangat rendah, dan saya tidak akan pernah menduga satu atau dua dekade yang lalu bahwa beberapa pengembang web akan merangkul penulisan shaders GPU tingkat rendah seperti itu).

Jika akan ada cara agar area yang kritis terhadap kinerja pindah ke bahasa tingkat yang lebih tinggi, itu harus berasal lebih dari perangkat lunak dan kompiler serta alat yang kami miliki seperti yang saya lihat. Masalahnya bagi saya di masa mendatang adalah perangkat keras tidak cukup kuat. Ini lebih berkaitan dengan bagaimana kita tidak dapat menemukan cara untuk berbicara secara efektif setiap kali itu berubah dan maju tanpa bekerja kembali ke bahasanya sendiri lagi. Sebenarnya ini adalah langkah cepat di mana perubahan perangkat keras yang membuat pemrograman tingkat tinggi agak sulit dipahami untuk area ini seperti yang saya lihat, karena jika secara hipotetis perangkat keras kita berhenti bergerak maju secara tiba-tiba selama beberapa dekade berikutnya,

Lucunya hari ini, ketika saya sedang bekerja di bidang kritis kinerja asli, saya harus berpikir lebih rendah daripada yang saya mulai (meskipun saya mulai di era Borland Turbo C DOS). Karena saat itu cache CPU hampir tidak ada. Itu sebagian besar hanya DRAM dan register, yang berarti saya bisa lebih fokus pada kompleksitas algoritmik dan menulis struktur terkait seperti pohon dengan cara yang sangat mudah tanpa mengambil banyak kinerja. Saat ini detail tingkat rendah dari cache CPU mendominasi pemikiran saya hampir seperti algoritma itu sendiri. Dan juga kami memiliki mesin multi-core yang harus membuat kami berpikir tentang multithreading dan atomics dan mutexes dan thread safety dan struktur data bersamaan dan sebagainya, yang saya katakan adalah, dalam banyak hal, fokus level yang jauh lebih rendah (seperti dalam, tidak begitu manusiawi intuitif) daripada ketika saya mulai.

Anehnya itu tampaknya sangat benar bagi saya sekarang. Saya pikir saya lebih terpengaruh oleh kompleksitas dan detail perangkat keras yang mendasari dan tingkat rendah saat ini daripada 30 tahun yang lalu, mencoba yang terbaik untuk melepas kacamata nostalgia. Tentu saja kami mungkin telah berbicara sedikit tentang perakitan di sini dan harus berurusan dengan beberapa detail mengerikan seperti XMS / EMS. Tetapi untuk sebagian besar saya akan mengatakan ada kurang kompleksitas dan perangkat keras dan kesadaran penyusun yang saya butuhkan saat itu daripada yang saya lakukan hari ini ketika saya bekerja di bidang yang sangat kritis terhadap kinerja. Dan itu hampir tampak benar bagi seluruh industri jika kita menyisihkan seperti menulisif/else pernyataan dengan cara yang sedikit lebih dapat dibaca secara manusiawi dan mempertimbangkan seberapa banyak orang pada umumnya saat ini lebih memikirkan detail perangkat keras tingkat rendah (dari beberapa inti hingga GPU hingga SIMD ke cache CPU dan rincian internal tentang bagaimana kompiler / juru bahasa mereka / perpustakaan berfungsi dan sebagainya).

Tingkat Tinggi! = Kurang Efisien

Kembali ke pertanyaan ini:

Jika ya, seiring dengan peningkatan perangkat keras haruskah kita mengharapkan bahasa tingkat lebih tinggi untuk mengambil alih industri game?

Bagi saya ini bukan tentang perangkat keras. Ini tentang pengoptimal dan alat. Ketika saya mulai orang praktis menulis semua game konsol dalam perakitan, dan ada keuntungan kinerja asli kemudian terutama mengingat kurangnya kompiler berkualitas menghasilkan 6502.

Ketika optimisasi kompiler C menjadi lebih pintar dalam optimasi mereka, maka mereka mulai mencapai titik di mana kode tingkat tinggi yang ditulis dalam C bersaing dan kadang-kadang bahkan mengungguli kode yang ditulis oleh para ahli perakitan terbaik di banyak bidang (meskipun tidak selalu), dan yang membuatnya jadi saat itu adalah no-brainer untuk mengadopsi C untuk setidaknya sebagian besar pengkodean untuk permainan. Dan pergeseran serupa secara bertahap terjadi di beberapa titik dengan C ++. Adopsi C ++ lebih lambat karena saya pikir peningkatan produktivitas pergi dari perakitan ke C mungkin bisa mencapai kesepakatan dengan suara bulat dari gamedevs yang menulis game non-sepele sepenuhnya di ASM sebagai lawan dari C ke C ++.

Tetapi perubahan ini tidak berasal dari perangkat keras yang menjadi lebih kuat karena pengoptimal untuk bahasa-bahasa ini membuat tingkat yang lebih rendah sebagian besar (meskipun tidak selalu sepenuhnya, ada beberapa kasus tidak jelas) usang.

Jika Anda dapat membayangkan skenario hipotetis di mana kita dapat menulis kode dalam kode tingkat tertinggi yang dapat dibayangkan, tanpa khawatir tentang multithreading atau GPU atau kehilangan cache atau semacamnya (mungkin bahkan bukan struktur data tertentu), dan pengoptimalnya seperti kecerdasan buatan pintar dan bisa mengetahui tata letak memori paling efisien menata ulang dan memadatkan data kami, mencari tahu itu bisa menggunakan beberapa GPU di sana-sini, memparalelkan beberapa kode di sana-sini, menggunakan beberapa SIMD, mungkin profil itu sendiri dan terus mengoptimalkan IR-nya seperti kita manusia menanggapi hotspot profiler, dan melakukan itu dengan cara yang mengalahkan para ahli terbaik dunia, maka itu akan menjadi no-brainer bahkan bagi mereka yang bekerja di bidang paling kritis untuk mengadopsinya ... dan itu adalah kemajuan datang dari pengoptimal yang sangat pintar, bukan perangkat keras yang lebih cepat.

Energi Naga
sumber
0

Dalam C #, "mengoptimalkan mikro" disukai, jarang dan biasanya buang-buang waktu. Ini tampaknya tidak menjadi kasus dalam pengembangan game.

Anda memiliki masalah terminologi di sini. Anda menggunakan kata-kata dengan benar, tetapi pengembang game dan pebisnis menggunakan istilah yang sama dalam dua cara yang sangat berbeda.

Untuk bisnis, "optimasi mikro" berarti mempercepat langkah yang sangat kecil dalam keseluruhan proses bisnis yang diterapkan oleh perangkat lunak. Alasan itu disukai biasanya salah satu dari:

  1. Uang ekstra yang dihabiskan memberikan nilai bisnis yang sama, dengan kecepatan beberapa detik lebih cepat. Uang yang disimpan dalam peningkatan kecepatan berasal dari kumpulan uang yang berbeda (waktu pengguna) sehingga bisnis pada umumnya tidak mendapat manfaat dari upaya yang dikeluarkannya, klien melakukannya dengan mengorbankan bisnis.
  2. Biasanya programmer bisnis memiliki visibilitas buruk dalam keseluruhan proses bisnis, sehingga optimalisasi satu langkah mungkin tidak menghasilkan manfaat yang baik untuk keseluruhan proses. Misalnya, jika Anda membuat 3% dari proses 10x lebih cepat, Anda telah mempercepat seluruh proses 2,7%.
  3. Biasanya bisnis memiliki daftar besar sisa pekerjaan yang memiliki beberapa nilai bisnis, dan akan memprioritaskan menambahkan nilai itu daripada memberikan nilai yang sama dalam waktu (mungkin) lebih kecil.

Pengembangan game adalah binatang yang berbeda. "optimasi mikro" adalah menghemat sedikit waktu dalam suatu fungsi atau rutin.

  1. Sistem game cenderung dipegang oleh siklus rendering. Saat ini standar emas adalah 60 frame per detik, jadi semua yang akan dihitung perlu dilakukan dan ditampilkan di layar dalam 1/60 detik.
  2. Ini berarti bahwa seringkali rutinitas yang sama dipanggil ribuan hingga ratusan ribu kali selama permainan. Jadi peningkatan 10x dalam fungsi tunggal diperbesar nilainya dengan berapa kali manfaat perbaikan akan dirasakan.
  3. Kegagalan untuk mencapai tingkat rendering berdampak pada presentasi permainan. Video akan menjadi berombak, karakter akan hidup dengan melompat-lompat dan bukannya gerakan yang lancar. Ini segera membawa pemain keluar dari permainan, dan masuk ke ranah mempertanyakan nilai permainan.

Jadi dalam bisnis, tidak ada yang peduli jika bentuk proses bisnis 4 langkah hadir dalam 0,6 detik atau 0,5 detik. Saat bermain, seseorang peduli jika rutinitas yang membutuhkan 200 ms dapat dikurangi menjadi eksekusi dalam 100 ms.

Ini semua tentang nilai yang dikirimkan ke klien, kebutuhan klien, dan rasio biaya-manfaat dari perubahan.

Edwin Buck
sumber
-1

Itu ada hubungannya dengan mengapa alat itu dipilih untuk pekerjaan tertentu.

Para pegolf akan terobsesi pada arah dan kekuatan yang mereka terapkan dengan putter, tidak begitu banyak ketika mereka menggunakan driver.

Mengapa? Karena mereka jenis tembakan yang berbeda. Untuk berkendara, Anda ingin mendapatkannya di fairway dengan jarak maksimum. Untuk putt, Anda ingin mendapatkannya tepat di dalam lubang.

Hal yang sama berlaku di sini. Pengembang game memilih C ++ karena memberi mereka kontrol atas kinerja operasi yang berbeda. Jika Anda memilih itu, Anda akan ingin memanfaatkannya.

JohnMcG
sumber
-3

Sebagian besar aplikasi bisnis ditulis sebagai alat internal. Harapan tentang kegunaan alat ini jauh lebih rendah daripada dalam kasus perangkat lunak yang dijual kepada pelanggan massal. Sangat umum bahwa aplikasi bisnis in-house memiliki menu dan dialog yang bereaksi lambat terhadap klik mouse, jendela yang digambar ulang dengan penundaan, atau bahkan GUI yang ditulis dalam Swing (horor!). Ini karena sejumlah alasan (lebih penting bahwa perangkat lunak dapat disesuaikan daripada sangat "tajam", para pengguna perangkat lunak tidak punya pilihan apakah akan menggunakan atau tidak menggunakan perangkat lunak yang dipermasalahkan, orang-orang yang membuat keputusan untuk menginstal perangkat lunak tidak menggunakannya sendiri ...). Konsekuensi dari semua ini adalah bahwa pengembang alat ini tidak menghabiskan banyak waktu untuk mengoptimalkan respon dari aplikasi, tetapi peduli banyak tentang ekstensibilitas dan sejumlah fitur. Basis klien berbeda => sasaran desain berbeda => metodologi berbeda.

Perhatikan bahwa aplikasi bisnis yang menargetkan pemirsa massal, seperti Excel, IS sangat dioptimalkan.

quant_dev
sumber