2010-03-11 16 views
9

Windows üzerinde derleme sürelerini kısaltmak için çalışıyoruz ve bu nedenle tüm seçenekleri göz önünde bulunduruyoruz. GCC (MinGW veya Cygwin) ve MSVC derleyicisini (CL) kullanarak herhangi bir şans olmadan derleme zamanı arasında bir karşılaştırma yapmak için Google'da arama yapmaya çalıştım. Tabii ki, bir karşılaştırma yapmak zor olmayacaktı, ancak yapabilsem, tekerleği yeniden icat etmekten kaçınmayı tercih ederim.Windows GCC ve MSVC derleyicisi arasındaki derleme karşılaştırması

Böyle bir karşılaştırmayı bilen var mı? Ya da belki de herkes deneyimlidir?

giriş çok takdir :)

cevap

4

karşılaştırılması derleyici önemsiz değildir: Bu işlemci, işlemci arasında değişebilir

  • . GCC, Core 2 Duo için i7 ve MSVC için daha iyi veya tam tersi olabilir. Performans önbellek vb. Etkilenebilir. (Döngüleri açın veya döngüyü açmayın, işte bu soru;)).
  • Kodun nasıl yazıldığına büyük ölçüde bağlıdır. Bazı deyimler (birbirine eşdeğer) bir derleyici tarafından tercih edilebilir.
  • Kodun nasıl kullanıldığına bağlıdır.
  • Bayraklara göre değişir. Örneğin, gcc -O3 genellikle daha yavaş kod üretiyorsa o zaman -O2 veya -Os ya da -Os olarak bilinir.
  • Kod hakkında varsayımda bulunulmasına bağlı olarak değişir. Sıkı takma adlara izin verebilir veya hayır (-fno-strict-aliasing/gg'de -fstrict-aliasing). Tam IEEE 754'e ihtiyacınız var mı yoksa kayan işaretçi hesaplama kurallarına eğilebilir misiniz (-ffast-math).
  • Ayrıca belirli işlemci uzantılarına da bağlıdır. MMX/SSE'yi etkinleştirir veya etkinleştirmez misiniz? İçsel mi yoksa hayır mı kullanıyorsun? Bu kodun i386 uyumlu olup olmadığına bağlı mısın?
  • Hangi sürüm gcc? Msvc hangi sürümü?
  • Gcc/msvc uzantılarından herhangi birini kullanıyor musunuz?
  • Mikro markalama veya makrobenchmarking kullanıyor musunuz?

Ve sonunda birbirlerine sonuç istatistiksel hata daha az olduğunu öğrenmek;)

tek uygulama (fonksiyon A msvc in gcc daha iyi performans ama B sonuçsuz olabilir sonucu kullanılsa bile).

PS. Cygwin'in POSIX ve WinAPI arasında ek bir dolaylılık seviyesi olduğu için en yavaş olacağını söyleyebilirim.

+0

Sorun, oluşturulan yürütülebilir dosyanın performansı hakkında değil, derleme süreleriyle ilgilidir. –

+0

Yukarıdakilerin neredeyse hepsi, derleyici hızını ölçmek için muhtemelen sonuncu hariç geçerlidir. –

+0

Reddetmenin herhangi bir nedeni var mı? –

İlgili konular