Điều bất thường, những hậu quả bất ngờ xảy ra về hiệu năng, bộ nhớ, vv khi chuyển từ chạy các ứng dụng .NET của bạn theo JIT 64 bit so với JIT 32 bit? Tôi quan tâm đến điều tốt, nhưng quan tâm hơn đến những vấn đề tồi tệ đáng ngạc nhiên mà mọi người gặp phải.Cơn đau đầu 32 bit của tôi hiện nay là chứng đau nửa đầu 64bit?!? (hoặc 64bit .NET CLR Runtime issues)
Tôi đang trong quá trình viết một ứng dụng .NET mới sẽ được triển khai ở cả 32bit và 64bit. Đã có nhiều câu hỏi liên quan đến các vấn đề với việc chuyển ứng dụng - Tôi không quan tâm đến số "gotchas" from a programming/porting standpoint. (ví dụ: Xử lý bản địa/COM interop một cách chính xác, các loại tham chiếu được nhúng trong cấu trúc thay đổi kích thước của cấu trúc, v.v.)
Tuy nhiên, tôi nghĩ - Tôi có vấn đề gì khác?
Đã có nhiều câu hỏi và bài đăng trên blog đề cập đến vấn đề này hoặc nhấn một khía cạnh của nó, nhưng tôi chưa thấy bất kỳ điều gì được biên soạn một danh sách các vấn đề.
Cụ thể - Ứng dụng của tôi rất bị ràng buộc CPU và có các mẫu sử dụng bộ nhớ rất lớn (do đó cần 64bit ngay từ đầu), cũng như đồ họa trong tự nhiên. Tôi quan tâm đến những vấn đề tiềm ẩn khác có thể tồn tại trong CLR hoặc JIT đang chạy trên Windows 64 bit (sử dụng .NET 3.5sp1).
Dưới đây là một vài vấn đề tôi hiện đã biết về:
- (Now I know that) Properties, thậm chí tính chất tự động, không được inlined trong x64.
- Hồ sơ ký ức về những thay đổi ứng dụng, cả hai vì size of references, mà còn vì bộ cấp phát bộ nhớ có đặc tính hiệu suất khác nhau
- Startup times can suffer on x64
Tôi muốn biết những gì khác, cụ thể, vấn đề người đã phát hiện ra trong JIT trên Windows 64bit, và cũng có thể nếu có bất kỳ giải pháp nào cho hiệu năng.
Cảm ơn tất cả!
---- EDIT -----
Chỉ cần làm rõ -
Tôi biết rằng cố gắng để tối ưu hóa sớm là thường xấu. Tôi biết rằng lần thứ hai đoán hệ thống thường là xấu. Tôi cũng biết rằng tính di động đối với 64bit có vấn đề riêng của nó - chúng tôi chạy và thử nghiệm trên các hệ thống 64 bit hàng ngày để trợ giúp việc này. v.v.
Ứng dụng của tôi, tuy nhiên, không phải là ứng dụng doanh nghiệp tiêu biểu của bạn. Đó là một ứng dụng phần mềm khoa học. Chúng tôi có nhiều quy trình mà ngồi bằng cách sử dụng CPU 100% trên tất cả các lõi (nó cao threaded) cho giờ tại một thời điểm.
Tôi dành nhiều thời gian để lược tả đơn đăng ký và điều đó tạo nên sự khác biệt lớn. Tuy nhiên, hầu hết các profilers vô hiệu hóa nhiều tính năng của JIT, do đó, các chi tiết nhỏ trong những thứ như cấp phát bộ nhớ, nội tuyến trong JIT, vv, có thể rất khó khăn để pin xuống khi bạn đang chạy theo một hồ sơ. Do đó tôi cần câu hỏi.
Chuỗi này sẽ hữu ích hơn rất nhiều (dễ tìm với Google hoặc Stacko-search, v.v.) nếu tựa đề được gọi là thời gian chạy .NET 32 và 64 bit. –