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.
Sorun, oluşturulan yürütülebilir dosyanın performansı hakkında değil, derleme süreleriyle ilgilidir. –
Yukarıdakilerin neredeyse hepsi, derleyici hızını ölçmek için muhtemelen sonuncu hariç geçerlidir. –
Reddetmenin herhangi bir nedeni var mı? –