2009-06-07 12 views
6

Her iki x86 ve x64 platformlarında çalışması gereken bir .Net Framework 3.5 SP1/CLR 2.0 uygulamasına sahip olduğumu varsayalım. Her ne sebeple olursa olsun, ayrı x86 ve x64 yükleme programları oluşturmam gerektiğini varsayalım.Bir montajı x64 olarak derlemek için herhangi bir avantaj var mı?

Zaten x64'e özgü bir yükleyicim olduğu için, uygulamanın kendisini "AnyCPU" hedeflemesi yerine x64 olarak yeniden derlemenin herhangi bir yararı olur mu?

Hedef, oluşturulan derlemenin başlık bilgilerinin yanı sıra x64 ile hiçbir şey değiştirmez mi?

+0

ile derlendiğinde büyük parçacık yığınları ayrılır (bu etiketi taşıyan tüm iletiler, .NET derlemeleri değil, assembler'la ilgili olduğundan, çıkarılmış etiket derlemesi) –

cevap

4

Eğer x64 belirtirseniz, program için bazı varsayılan bellek ayarlarını değiştirir, bu da büyük bir bellek basıncına sahip programlarda biraz daha fazla performans sağlar. X64 (link)

2

Ngen hiçbir meclisin olmadığı sürece "AnyCPU" olarak bırakmak daha iyi olur ve JIT mimariyi hedefler.

1

Bir x86 platformu için derlenmiş bir doğal x86 dll sarmalayıcı derlemesi sarmak gerektiğinde, bir x64 makinede atılmış bir BadImageFormatException aldığımdan daha fazla buldum. Sonra bir tür kartopu, çünkü bu meclise başvuran tüm meclislerin de x86 platformu için derlenmesi gerekiyor.

Sadece yanlış bir şey yapıyorum olabilir, ancak bulduğum şey bu olabilir. Yerli dlls kullanmıyorsam, tüm derlemelerimi "AnyCPU" olarak bırakırdım.

0

.net meclisleri hakkında pek bir şey bilmiyorum, ancak genel olarak, bir programın x64 mimarisinde çalıştırılacağını biliyorsanız, x64 makine kodunda derlemek bazı performans iyileştirme elde edersiniz. Hiçbir şey kaybetmeyin (zaten x64 ortamlarında çalıştırılacağını bildiğiniz sürece).

İlgili konular