2009-02-26 6 views

Trả lời

12

Xác định khối lượng công việc của bạn và những gì "thực hiện" có ý nghĩa với bạn.

Đây là loại phiền toái đang chạy với tôi, như một người đam mê hiệu suất có thời gian dài. Có hay không một thay đổi cụ thể "thực hiện tốt hơn" hay không là phụ thuộc, đầu tiên và quan trọng nhất, về khối lượng công việc, tức là, những gì bạn đang yêu cầu chương trình làm.

64 bit Java thường sẽ hoạt động tốt hơn trên những thứ có tải tính toán nặng. Các chương trình Java, theo kiểu cổ điển, có tải I/O nặng và tải mạng nặng; 64 bit so với 32 bit có thể không quan trọng, nhưng hệ điều hành thường làm.

+5

Không thể tin rằng câu trả lời là đơn giản. Đối với tôi 64 bit là phù hợp hơn để tải nơi không gian địa chỉ 64-bit là một trợ giúp và không phải là một trở ngại. Có một chi phí 2x cho mỗi con trỏ, có thể được outweighed nếu bạn cần LOTS dữ liệu. bộ nhớ cache đối tượng máy chủ web là một ví dụ tuyệt vời về nơi giành chiến thắng 64 bit. – Cheeso

+4

Sun nói rằng câu trả lời này là sai. – Darron

+1

Darron, bạn có một trích dẫn cho điều đó? Kể từ khi tôi làm việc cho Sun trong 10 năm, và vì câu trả lời về cơ bản là "nó phụ thuộc vào khối lượng công việc và loại hiệu suất bạn quan tâm", tôi - làm thế nào để đặt cái này - đừng tin bạn. –

-2

Có, đặc biệt nếu mã của bạn được tạo để nhắm mục tiêu nền tảng 64 bit.

+1

Làm thế nào chính xác một mã Java đích cho nền tảng 64 bit? – TofuBeer

+0

Sử dụng số nguyên 64 bit thay vì 32 bit .... v.v. –

2

Trên hầu hết các cấu trúc CPU CPU 32 bit nhanh hơn 64 bit, tất cả đều bằng nhau. Các con trỏ 64 bit yêu cầu băng thông gấp đôi để chuyển thành 32 bit. Tuy nhiên, kiến ​​trúc bộ lệnh x64 thêm một chút sự tỉnh táo hơn x86, vì vậy nó kết thúc nhanh hơn. Số lượng xử lý các loại dài thường nhỏ.

Tất nhiên, nó cũng phụ thuộc vào việc triển khai Java. Cũng như trình biên dịch, bạn có thể thấy sự khác biệt trong việc thực hiện; ví dụ, NIO giả định các con trỏ 64 bit. Cũng lưu ý rằng Sun trước đó chỉ vận chuyển máy chủ nhanh hơn HotSpot triển khai cho x64. Điều này có nghĩa rằng nếu bạn chỉ định -d64, bạn cũng sẽ chuyển từ máy khách sang máy chủ HotSpot, IIRC.

2

Một số cải tiến: các phép toán có tốc độ gấp đôi trên 64 bit tính nhanh như nhau trên các bit 32 bit, cũng như các phép toán dài 64 bit so với int.

Vì vậy, nếu bạn đang chạy mã với rất nhiều thời gian, bạn có thể thấy một cải tiến thực sự.

18

Hầu như luôn 64 bit sẽ chậm hơn.

Để báo Sun từ HotSpot FAQ:

Sự khác biệt hiệu suất so sánh một ứng dụng chạy trên một nền tảng 64-bit so với một nền tảng 32-bit trên SPARC là vào thứ tự của 10-20% xuống cấp khi bạn di chuyển đến máy chủ 64 bit. Trên các nền tảng AMD64 và EM64T, chênh lệch này là từ 01-, dao động từ 0-15% tuỳ theo số về số lượng truy cập con trỏ ứng dụng của bạn thực hiện.

Có thêm chi tiết tại liên kết.

+0

nó hầu như luôn luôn nhanh hơn trên x86_64, như được chỉ ra trong đoạn trên –

3

64 bit hoạt động tốt hơn nếu bạn cần nhiều hơn 1,2 GB. Trên một số nền tảng, bạn có thể nhận được lên đến 3 GB nhưng nếu bạn muốn 4 - 384 GB ví dụ, 64-bit là lựa chọn duy nhất của bạn.

Tôi tin rằng Azul hỗ trợ một JVM 384 GB, có ai biết nếu bạn có thể lên cao hơn không?

+0

1.2GB hoặc cái gì? ký ức? – johnny

+0

@johnny Có, 1,2 GB bộ nhớ trên các hệ thống Windows 32 bit. –

0

Trải nghiệm của tôi khác với các câu trả lời khác.

Java 64 bit có thể nhanh hơn 32bit. Ít nhất với các bài kiểm tra của tôi nó luôn luôn là!Đối số con trỏ không hợp lệ khi sử dụng ít hơn 4GB vì sau đó 64bit-VM cũng sẽ sử dụng con trỏ ngắn trong nội bộ. Tuy nhiên, bạn sẽ nhận được bộ hướng dẫn nhanh hơn về các CPU 64 bit!

Tôi đã thử nghiệm điều này với Windows 7 và JDE1.8.0_144, nhưng có thể lý do thực sự là cài đặt JVM nội bộ khác nhau. Khi bạn sử dụng JVM 64 bit, nó bắt đầu ở chế độ "máy chủ", trong khi máy ảo 32 bit bắt đầu ở chế độ "máy khách".