2009-02-26 15 views

cevap

12

İş yükünüzü ve "gerçekleştirme" nin ne anlama geldiğini tanımlayın.

Bu uzun süredir bir performans geek olarak, benim için çalışan sıkıntı tür. Belirli bir değişimin "daha iyi performans gösterip göstermediği" olsun ya da olmasın, öncelikle ve en önemlisi, iş yükünde, yani programdan ne istediğini soruyorsunuz.

64 bit Java, genellikle ağır hesaplama yükleri olan şeylerde daha iyi performans gösterir. Java programları, klasik olarak, ağır I/O yüklerine ve ağır ağ yüklerine sahiptir; 64 bit vs 32 bit önemli olmayabilir, ancak işletim sistemleri genellikle yapar.

+5

Cevabın bu kadar basit olduğuna inanamıyorum. Benim için 64 bit adres alanının bir yardım ve bir engel değil yükler için daha uygundur. Çok sayıda veriye ihtiyacınız varsa, her işaretçi için 2 kat maliyet vardır. Bir web sunucusu nesne önbelleği, 64 bit kazancının bulunduğu bir örnektir. – Cheeso

+4

Sun, bu cevabın yanlış olduğunu söylüyor. – Darron

+1

Darron, bunun için bir alıntı var mı? 10 yıldır Sun için çalıştığım için ve cevap temelde “iş yüküne ve ölçmekle ilgili ne tür bir performansa bağlı” olduğu için, ben - bunu nasıl yapacağım - sana inanmıyorum. –

-2

Evet, özellikle kodunuz 64 bitlik bir platformu hedefleyecek şekilde oluşturulmuşsa. En İşlemci mimari yapılarındandır 32-bit üzerinde

+1

64 bit platform için bir Java kodu nasıl hedeflenir? – TofuBeer

+0

32 bit yerine 64 bit tamsayı kullanın .... vb. –

2

tüm şey eşit olduğunda, 64-bit daha hızlıdır. 64 bit işaretçiler 32 bit olarak aktarmak için iki kat fazla bant genişliği gerektirir. Bununla birlikte, x64 komut kümesi mimarisi x86 üzerinde biraz akıl almaz, böylece daha hızlı olur. Uzun tiplerin kullanım miktarı genellikle küçüktür. Tabii ki, aynı zamanda Java'nın uygulanmasına da bağlıdır. Derleyicinin yanı sıra, uygulamadaki farklılıkları da bulabilirsiniz; örneğin, NIO 64-bit işaretçileri varsayar. Ayrıca, Sun'ın daha önce yalnızca x64 için daha hızlı olan sunucu HotSpot uygulamasını gönderdiğini unutmayın. Bu, -d64'u belirttiyseniz, istemciden sunucu HotSpot, IIRC'ye geçiş yapmanız anlamına gelir.

2

Bazı iyileştirmeler: işlemler 64 bit üzerinde çiftlerde ile int kıyasla 64 bit uzun üzerinde 32 bit üzerinde yüzen yanı sıra operasyonlarda eşit hızlı hesaplamak.

Yani uzun ürünler tonlarca kod çalıştırıyorsanız gerçek iyileşme görebilirsiniz.

18

Neredeyse her zaman 64 bit daha yavaş olacaktır.

HotSpot FAQ den Sun alıntı: bir uygulama SPARC 32 bitlik bir platformun karşı bir 64 bit platformda çalışan karşılaştırılması performans farkı% 10-20 mertebesinde

olan

64 bit VM'ye taşırken bozulması. AMD64 ve EM64T platformlarında bu arasındaki fark, 'a bağlı olarak% 0 - 15 arasında değişmektedir ve uygulamanızın gerçekleştirdiği işaretçisinin miktarını gösterir.

linkten fazla detay bulunmaktadır.

+0

, yukarıdaki paragraf –

3

1.2 GB'den daha fazlasına ihtiyacınız varsa 64 bit daha iyi performans gösterir. Bazı platformlarda en fazla 3 GB alabilirsiniz, ancak örneğin 4 - 384 GB istiyorsanız 64 bit tek seçeneğinizdir.

Herkes daha yüksek gitmek eğer biliyor Azul bir 384 GB JVM destekleyen inanıyoruz?

+0

1.2GB'de belirtildiği gibi x86_64 üzerinde neredeyse her zaman daha hızlı mıdır? bellek? – johnny

+0

@johnny Evet, 32 bit Windows sistemlerinde 1,2 GB bellek. –

0

Benim deneyimim diğer yanıtlardan farklı.

Java 64bit, 32bit'dan daha hızlı olabilir. En azından sınavlarımda her zaman oldu!İşaretçi argümanı 4GB'tan daha az kullanıldığında geçerli değildir, çünkü 64bit-VM dahili olarak kısa göstergeler kullanacaktır. Ancak 64bit işlemcinin daha hızlı komut seti!

Bunu Windows 7 ve JDE1.8.0_144 ile test ettim, ancak asıl neden farklı dahili JVM ayarlarıdır. 64-bit JVM'yi kullandığınızda "server" modunda başlar, 32-bit VM "client" modunda başlar.

İlgili konular