Apakah GNU GCC digunakan untuk game AAA?

11

GNU GCC adalah kompiler yang sangat umum, tetapi sepertinya hampir tidak ada yang menggunakannya untuk proyek yang lebih besar seperti game AAA. Bagi saya, itu berfungsi dengan baik, tidak pernah punya masalah dengan itu. Tapi saya heran mengapa semua game AAA tampaknya menggunakan kompiler komersial seperti Intel Studio? Mengapa itu penting? GNU GCC juga mengoptimalkan kode untuk semua sistem daripada hanya Intel, jadi mengapa mereka repot dengan hal-hal seperti Intel Studio?

LiquidFeline
sumber
GCC adalah kompiler yang sangat umum sebelum LLVM / Dentang datang, atau mengatakannya dengan dentang: "gcc? Apakah maksud Anda dentang?" ;)
Maik Semder
Apa yang dilakukan dentang? Apakah ini kompiler? Jika demikian, apakah lebih baik? O_o
LiquidFeline
Dentang adalah ac / c ++ frontend untuk platform kompiler yang disebut llvm. Ya, lebih baik dalam banyak hal. Sebagai permulaan itu menunjukkan kesalahan yang tepat dalam makro, bukan hanya garis di mana makro dipanggil. Itu membuat akal intelli bodoh terlihat lebih bodoh, karena membuatnya mudah untuk mengakses pohon AST, tidak perlu parser tambahan. Kompilasi kode parsial, daftarnya panjang, lihatlah, nilainya :)
Maik Semder

Jawaban:

9

Kompiler Intel hanyalah kompiler yang berbeda. GCC ++ dan VC ++ menghasilkan kode kualitas produksi, seperti halnya ICC Intel. Perbedaan utama terletak pada 4 bidang utama:

  • a) Fitur yang didukung (sebagian besar berbeda pada fitur C ++ 11)
  • b) Ukuran yang dapat dieksekusi
  • c) Runtime
  • d) Waktu kompilasi

Saat Anda mencoba memeras setiap kinerja terakhir dari (sebagian besar) CPU Intel, studio AAA bersedia membayar untuk itu dan sedikit untuk ICC. Lihat di sini untuk cerita anekdot yang bagus. Perhatikan bagian kelemahannya juga, di mana ICC dituduh menjalankan kurang baik pada set instruksi Intel non-asli CPU (misalnya AMD).

bobobobo
sumber
10

Banyak platform non-PC, termasuk beberapa konsol dan perangkat genggam, menggunakan GCC yang dimodifikasi sebagai kompiler utama / satu-satunya.

Di PC, sebagian besar pengembang game hanya menggunakan kompiler Visual Studio. Pilihan kompiler biasanya memiliki dampak kecil pada kecepatan runtime dibandingkan dengan desain mesin dan grafik, mereka semua membayar untuk Visual Studio karena fitur yang ditetapkan sebagai IDE, GCC relatif lebih sulit untuk menginstal dan memulai. dan itu tidak berbuat banyak untuk meningkatkan waktu dan produktivitas iterasi. Tidak ada alasan yang cukup kuat untuk menggunakan GCC dibandingkan dengan alternatif yang telah diinvestasikan semua orang.

Sean Middleditch
sumber
Bukan hanya karena GCC sedikit lebih sulit untuk memulai, tetapi MinGW membutuhkan pengiriman dengan DLL jika aplikasi Anda multithreaded - GCC menggunakan mekanisme pengecualian berbeda dari SEH yang membuat DLL diperlukan pada Windows.
Dietrich Epp
1
Sebagai contoh, Sony memindahkan kompiler utama PS3 mereka dari kompiler internal mereka ke GCC karena dianggap lebih baik. Dan tidak ada kekurangan judul AAA yang dirilis di PS3.
Kaganar
Kelemahannya adalah bahwa GCC khusus platform ini biasanya sudah ketinggalan zaman, biasanya pra-GPLv3 dan karenanya pra-C ++ 11 dan juga kehilangan banyak diagnostik dan kinerja baru-baru ini. : / Penolakan GCC baru oleh banyak vendor bisa menjadi alasan lain mengapa banyak pengembang game hanya menghindari GCC jika mereka bisa; mereka mungkin memiliki pandangan yang tidak adil tentang kondisi yang diberikan pengalaman dengan vendor toolchains. Lihatlah perbandingan Dentang yang sering terjadi pada platform Apple di mana Dentang 3.1 atau lebih dibandingkan dengan GCC 4.2. (Saya penggemar dentang, tetapi perbandingannya umumnya tidak adil.)
Sean Middleditch
4

Ya, itu bisa digunakan untuk game AA.

Alasan hampir setiap game AAA di luar sana (jika tidak semua) menggunakan kompiler komersial adalah kenyataan bahwa produk komersial biasanya memiliki dukungan dan Anda dapat mengeluh atau mendapatkan bantuan 24/7 atau hanya ASAP ketika berurusan dengan masalah yang mungkin Anda miliki dan di AAA industri, waktu berarti uang. Tim dan perusahaan besar, terutama yang terakhir, tidak mau bergantung pada komunitas ketika uang besar dipertaruhkan. Lebih baik berinvestasi dalam dukungan dengan kontrak.

Di sisi lain, mesin mengandalkan SDK. Jika SDK tidak mendukung kompiler, itu berarti Anda sendirian dan tidak menguntungkan untuk melakukan solusinya.

Akhirnya, optimasi. Jika Anda tahu bahwa banyak pemain menggunakan Intel, bagaimana Anda ingin memberikan permainan Anda dengan anggun untuk mereka.

reefaktor
sumber
1
Dari perusahaan kami dengan satu miliar turnaround setiap tahun dapat mendukung gcc dan alat gnu dev lainnya di tingkat premium.
lzap