2009-08-21 29 views

cevap

14

Mutlaka değil. Bununla birlikte, C++/CLI, sözdizimsel şekerin çoğunu, C# 'de (örneğin boks) mevcut olan şeyleri yapmayan performans yolları etrafında alır.

Ayrıca, C++/CLI, yönetilmeyen kodla çok daha temiz bir iş birliği sağlar; aslında yönetilen/yönetilmeyen kodları karıştırmanıza olanak verir, bu da çok önemli bir ortamın benifit olabileceğini gösterir.

DÜZENLEME: http://msdn.microsoft.com/en-us/library/ms379617(VS.80).aspx

+0

C# 'nun sözdizimsel şeker eksikliği hakkında çok iyi bir nokta. –

+0

Teşekkürler, şeylere bakmanın farklı bir yolu, ama performans kodunu çıkardığına inandığım performans avantajı olduğunu tahmin ediyorum – LorenVS

+0

Sonra tekrar, C++/CLI, yığın tahsisi ve RAII taklit gibi şeyler için kendi başına sözdizimsel şeker tanıttı Bertaraf et. –

8

ikisi de .NET framework üzerinde çalışacak beri, herhangi bir performans farkı negligable olacağını söyleyebilirim. Herhangi bir fark, kesinlikle, hangi derleyicileri kullandığınızı ne kadar iyi gösterir. onlar da hayır genel olarak söyleyebilirim aynı sanal makine üzerinde çalıştırmak alır aynı bayt kodunda olsun hem .NET dilleri olarak

1

görmek.

C++/CLI gerçekten sadece .NET ve C++ arasındaki dil birlikte çalışma sağlamak için tasarlanmıştır. ikisi de ara dil talimatları gibi bitireceğiz olarak C++/CLI yazılmış

+3

C++/CLI kendi başına tam teşekküllü bir dildir:

farkların bazıları için bu yayınına bakın./Clr: saf derleme ortamında bile C# 'ye göre bazı avantajlara sahiptir. –

+0

Bu ürüne çok fazla çaba gösterildiğini düşünüyorum. Sadece birlikte çalışma için tasarlandığını düşünmek zordur. –

1

Herhangi yönetilen kod esasen, derleyici doğruluğunu varsayarak eşdeğer C# ile tam olarak aynı olacaktır. Bununla birlikte, C++/CLI, yönetilmeyen kodun, iyi optimize edilmişse, önemli hız avantajları sağlayabilecek şekilde yönetilmesini kolaylaştırır.

3

Eh, kısa cevap hiçbir olduğunu. Niye ya? C++/CLI'deki başvuru türleri, C# ile aynı olan MSIL için derlenir.

C++/CLI (ve uzun cevap) hakkında güzel bir şey

olsa, kolayca (birçok durumda) daha hızlıdır yerli kod, içine çağırabilir olmasıdır. Yerel C++ sınıfını yazarsanız ve yönetilen bir sınıfta birisi tarafından çağrıldığında yerel olarak çalıştırılmasını beklerseniz, söz konusu C++ sınıfının CLR desteği olmadan derlenmesi gerekir ( this question bunun nasıl yapılacağını gösterir).