2012-01-08 17 views
15

Tôi chỉ nhận thấy rằng ví dụ như ứng dụng nổi tiếng như chrome không có bất kỳ phiên bản 64 ít nhất là dưới cửa sổ.Có lợi thế lớn nào khi ứng dụng phát triển C++ chạy trên chế độ 64 bit không?

Trong công ty của mình, tôi viết các ứng dụng chạy dưới phiên bản 64 bit của các cửa sổ ở chế độ 32 bit.

Tôi tự hỏi nếu tôi có thể có một số đạt được lợi thế/hiệu suất để xây dựng các ứng dụng ở chế độ 64 bit thay vì 32 bit

Edit:

Thông thường, trong đó loại phần mềm, các tăng số lượng đăng ký số sẽ được hưởng lợi?

+2

Phiên bản 64 bit của Windows đi kèm với Internet Explorer trong cả hai biến thể 32 bit và 64 bit, nhưng phiên bản 32 bit là mặc định vì nhiều plugin IE chỉ 32 bit và không tải trong không gian quy trình 64 bit. Chrome có thể là 32 bit vì cùng một lý do. –

+0

có thể trùng lặp với [Ưu điểm hiệu suất 64 bit] (http://stackoverflow.com/questions/3343812/64-bit-performance-advantages), [Lợi thế và nhược điểm ở mức thấp hơn của 64-bit/32-bit là gì ?] (http://stackoverflow.com/questions/1282206/what-are-the-lower-level-advantages-and-disadvantages-of-64-bit-32-bit) –

+0

Nếu bạn có 32- cơ sở mã bit, bắt đầu làm việc theo cách của bạn lên đến 64-bit. Sẽ có lợi ích lớn đối với một số xử lý dữ liệu hiện có, nhưng ít hơn cho các bộ vi xử lý liên quan đến bộ xử lý, vì bản thân phối hợp/logic sẽ gần gấp đôi kích thước và phần nào đạt được hiệu suất giả định.Nhưng điều quan trọng là đủ để loại bỏ lớp tương thích. – ActiveTrayPrntrTagDataStrDrvr

Trả lời

8

64 (x86_64) bit là chủ đạo hiện nay . 2 ưu điểm lớn ở đây:

  • sẵn bộ nhớ hơn mà không bất kỳ thủ đoạn
  • More mục đích chung và xử lý bổ sung đăng ký

Nhưng bạn phải disadvatage nhỏ quá:

  • Thêm bộ nhớ tiêu thụ (thường lớn hơn 20-30% so với 32 bit)

Tôi nghĩ rằng Google Chrome chạy ở chế độ 32 bit trong Windows vì có quá nhiều plugin 32 bit (như Flash). Ngoài ra còn có phiên bản Linux cho 64 bit.

Chỉnh sửa để biết thêm câu hỏi

Thông thường bạn sẽ nhận được những lợi ích nếu ứng dụng của bạn sử dụng toán học (64-bit số nguyên số học), mã hóa/mã hóa/đóng gói/giải nén, mã hóa.

Ngoài ra nhìn vào Hướng dẫn IBM 64-Bit Computing Quyết định-Maker http://www.onitecservice.com.br/produtos/arquiv_pdf/nocona64bit_onitec_service.pdf

Những loại ứng dụng sẽ và sẽ không tận dụng lợi thế của việc chuyển đổi từ 32-bit để tính toán 64-bit?

Trong thứ tự từ lớn nhất đối với lợi ích nhất, các loại bao gồm:

  • I/O thâm - Bất kỳ ứng dụng mà dành nhiều thời gian lấy dữ liệu từ các thiết bị hơn chế biến nó: cơ sở dữ liệu back- kết thúc, thương mại điện tử, CRM, ERP, SAP, SAS, các ứng dụng kinh doanh quan trọng và dọc khác nhau và bất kỳ ứng dụng nào khác có yêu cầu bộ nhớ lớn. Trong các phiên bản chung, các ứng dụng này sẽ thấy những cải tiến hiệu suất đáng kể từ phần cứng, hệ điều hành và trình điều khiển thiết bị 64 bit, cũng như loại bỏ bộ nhớ lớp phủ và các chất ức chế hiệu suất khác.
  • Tính toán chuyên sâu - Tính toán hiệu năng cao (HPC) và khoa học/kỹ thuật điện toán, bao gồm khoa học đời sống, nghiên cứu địa vật lý; dựng hình đồ họa cao cấp; phát trực tuyến video và bất kỳ ứng dụng nào khác dành nhiều thời gian xử lý dữ liệu hơn là truy xuất dữ liệu đó.
  • Cơ sở hạ tầng cổng/bảo mật - Máy chủ SSL, dịch vụ thư mục, bộ nhớ đệm Internet và giao diện người dùng cơ sở dữ liệu. Các ứng dụng này có thể có được lợi ích từ công tắc. Bạn nên liên hệ với các nhà cung cấp phần mềm riêng lẻ để tìm hiểu kế hoạch khai thác các tính năng 64 bit của họ.
  • Cơ sở hạ tầng tiêu chuẩn - Lớp học này thường sẽ thấy ít lợi ích từ việc tính toán 64 bit. Các ứng dụng bao gồm các máy chủ tệp và máy in, các ứng dụng kinh doanh có khối lượng thấp/không tới hạn và các ứng dụng kế thừa có khả năng không được viết lại cho 64 bit.
+0

20-30% có vẻ rất lớn và khó tin cho mức trung bình. Bạn có một số nguồn cho điều đó? – bames53

+1

Ngay cả khi con số 20-30% là đúng, các máy 64 bit thường đi kèm với nhiều bộ nhớ hơn máy 32 bit. Xét cho cùng, toàn bộ lý do có bộ xử lý 64 bit là để bạn có thể giải quyết hơn 4 GB RAM. Mọi người xây dựng các máy 64 bit chỉ với 4 GB RAM hoàn toàn mất điểm. –

+1

@ bames53: Xem xét con trỏ đó, nói chung, thậm chí, gấp đôi kích thước trong ứng dụng 64 bit so với ứng dụng 32 bit, điều này khá đáng tin cậy, mặc dù tôi chưa bao giờ tự kiểm tra. –

0

Nếu bạn có khả năng biên dịch cho mục tiêu 64 bit, bạn nên thực hiện (imho). Bạn có thể thử và phân tích ứng dụng của bạn để xem liệu có nhu cầu thực tế (giới hạn mức tiêu thụ bộ nhớ, v.v.) hay không - nhưng tôi cho một cái nhìn thấy điểm đánh dấu "64 bit" trong công cụ quản lý ứng dụng của tôi khi tôi cuộn qua các tiến trình đang chạy.

Có một số ưu điểm của ứng dụng chế độ 64 bit, lý do chính là bộ nhớ khả dụng hơn. Nếu trình biên dịch của bạn xử lý việc biên dịch đúng cách và tối ưu hóa mã phù hợp, bạn sẽ có thể nhận được một số hiệu suất bổ sung.

Hãy thử và thực hiện thử nghiệm "thế giới thực" - biên dịch trong cả 64 và 32 bit và vẽ một số biểu đồ hiệu suất. Tôi đã làm điều này trên một ứng dụng và nó cho thấy một tăng hiệu suất ~ 20% (tính toán nhanh hơn) và lượng dữ liệu mà chương trình có thể tải đột nhiên dường như "vô hạn".

(Tôi đoán tốt nhất về Chrome là họ đang dựa vào một số thư viện của bên thứ 3 chạy trong 32-bit chỉ hoặc có thể sử dụng một số 32-bit chỉ dành cho Windows API.)

+0

làm thế nào điều này trả lời câu hỏi, đó là * Tôi tự hỏi nếu tôi có thể có một số lợi thế/hiệu suất đạt được để xây dựng các ứng dụng trong chế độ 64 bit *? –

+0

Tôi phải đồng ý với chỉ một ai đó - bạn không tham khảo bất kỳ lợi thế nào, bạn chỉ cần nói rằng người ta nên biên dịch sang 64-bit mà không có bất kỳ hướng dẫn hoặc biện minh nào. –

+0

@justsomebody - bạn nói đúng - Tôi chủ yếu tập trung vào "tại sao Chrome không chạy 64-bit" -part. Đã chỉnh sửa để trả lời câu hỏi thực sự tốt hơn. – mbanzon

0

Shamlessly chỉ quét http://en.wikipedia.org/wiki/64-bit Có ưu và khuyết điểm, để biết thông tin chi tiết, hãy xem trang wikipedia đó. Như đã nêu ở đó, lợi thế chính của các phiên bản 64-bit của ứng dụng là khả năng truy cập nhiều thanh ghi hơn trong kiến ​​trúc x86-64.

Cung cấp cho trang đó, không có dấu hiệu cho thấy có bất kỳ lợi ích hiệu suất đáng kể nào ngoài hộp. Bạn sẽ phải điều chỉnh ứng dụng của mình để tận dụng các tính năng mà nó cung cấp, nghĩa là nhiều đăng ký hơn và nhiều bộ nhớ hơn vì cùng một dữ liệu chiếm nhiều không gian hơn trong bộ nhớ (do con trỏ dài hơn và có thể các loại khác và đệm liên kết).

Theo W/P, việc sử dụng bộ nhớ nhiều hơn có lẽ cũng là nhược điểm chính. Tóm lại, hiệu suất đạt được có thể có được nhưng chương trình của bạn sẽ cần phải thay đổi một chút để tận dụng lợi thế của nó. Tôi muốn đề nghị điểm chuẩn chương trình của bạn trên cả hai kiến ​​trúc để xem liệu nó có tạo ra sự khác biệt ngay lập tức (mà không thay đổi bất cứ điều gì có thể).

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