2009-07-08 72 views

Trả lời

6

Tôi đã thấy nó nhanh hơn đáng kể (~ 4x trong kinh nghiệm của tôi) đối với một số ứng dụng tính toán nặng (số-crunching). Điều tốt nhất là nó đi kèm miễn phí trong các trường hợp được quản lý thuần túy. Bạn thậm chí không phải biên dịch lại bất cứ điều gì để có được những lợi ích. Ngoài ra, tôi đã nghe nói rằng JIT x64 có tối ưu hóa tích cực hơn.

Bất lợi lớn nhất có lẽ là không thể tải các thành phần COM 32 bit trong quá trình.

5

Ứng dụng của bạn có thể hoặc không thể chạy nhanh hơn. Tôi đã nhìn thấy những cải tiến cho một số ứng dụng nhưng không được cải thiện. Nó phụ thuộc vào ứng dụng của bạn tận dụng lợi thế của các hoạt động 64 bit (toán học) và nếu điều này bù đắp dữ liệu và mã lớn hơn mà x64 sử dụng và do đó phải tải vào bộ nhớ cache và dữ liệu trước khi nó có thể được thực thi.

http://blogs.msdn.com/b/joshwil/archive/2006/07/18/670090.aspx

Điều này đáng để đọc. Nó cũ (.NET 2.0) nhưng vẫn được áp dụng nhiều; kích thước con trỏ, COM interop vv:

Migrating 32-bit Managed Code to 64-bit

Nó cũng đáng khi biết rằng ngay cả trên x64 CLR có một hạn chế kích thước đối tượng duy nhất của 2Gb. Đây không phải là vấn đề đối với 99% kịch bản nhưng nếu bạn đang chuyển sang x64 có lẽ là do bạn có thể đang làm việc với các tập dữ liệu lớn. Xem tại đây để thảo luận thêm:

Are C# Strings (and other .NET API's) limited to 2GB in size?

So. Trừ khi ứng dụng của bạn sử dụng dữ liệu không phù hợp với bộ nhớ 32 bit hoặc sử dụng nhiều thao tác 64 bit, bạn có thể không thấy nhiều, nếu có bất kỳ cải tiến nào.

Nhược điểm khác là Visual Studio cho các ứng dụng x64 có một số hạn chế:

  • Edit, Continue không có sẵn cho 64-bit gỡ lỗi.

  • Bạn không thể gỡ lỗi ở chế độ hỗn hợp, gọi từ mã gốc sang mã được quản lý hoặc ngược lại, trong mã 64 bit.

Xem: http://msdn.microsoft.com/en-us/library/ms184681(VS.80).aspx

Lưu ý: Các trình biên dịch 64 bit C++ không được cài đặt theo mặc định. Bạn phải chọn chúng trong khi cài đặt.

Tôi cũng chỉ tìm thấy điều này (vì tôi đang tự tối ưu hóa một ứng dụng x64).

"Porting và tối ưu hóa các ứng dụng trên Windows 64-bit cho AMD64 ..."

http://download.microsoft.com/download/5/b/5/5b5bec17-ea71-4653-9539-204a672f11cf/AMD64_PortApp.doc

Có rất nhiều gợi ý tốt về công tắc biên dịch và những thứ tương tự.

+2

"Trình biên dịch 64 bit không được cài đặt theo mặc định": OP đang nói về các ứng dụng .NET. Điều này chỉ đúng đối với trình biên dịch C++ bản địa chứ không phải cho VB.NET/C#. –

+0

Đây là một lưu ý phụ. Tôi đã làm rõ nó ở trên. –

1

Ứng dụng 64 bit sẽ không luôn chạy nhanh hơn 32 bit. Hai bài đăng trên blog dưới đây nói về nó:
http://blogs.msdn.com/rmbyers/archive/2009/06/08/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx

Larger

con trỏ có nghĩa là nhiều bộ nhớ và tiêu thụ bộ nhớ cache, và số lượng byte của CPU bộ nhớ cache có sẵn là cùng cho cả 32-bit và 64 -bit quy trình.

http://blogs.msdn.com/ricom/archive/2009/06/10/visual-studio-why-is-there-no-64-bit-version.aspx

Một không gian địa chỉ 64 bit cho quá trình sẽ không giúp bạn với trang lỗi trừ theo những cách có thể gián tiếp, và nó chắc chắn sẽ làm tổn thương bạn trong cách trực tiếp vì dữ liệu của bạn là lớn hơn . Ngược lại, hệ điều hành 64 bit có thể giúp bạn rất nhiều! Nếu bạn đang chạy dưới dạng ứng dụng 32 bit trên hệ điều hành 64 bit thì bạn sẽ nhận được tất cả không gian địa chỉ 4G và tất cả có thể là được hỗ trợ bởi bộ nhớ vật lý (nếu bạn có RAM) ngay cả khi không sử dụng 64 bit con trỏ chính bạn.

Các vấn đề liên quan