2012-01-08 15 views
15

Właśnie zauważyłem, że na przykład słynna aplikacja jak chrome nie miała żadnych 64 wersji przynajmniej pod oknami.Czy są jakieś duże zalety posiadania aplikacji do programowania w C++ w trybie 64-bitowym?

W mojej firmie piszę aplikacje działające pod 64-bitową wersją okien w trybie 32-bitowym.

Zastanawiam się, czy mogę mieć jakiś zysk zalety/wydajność do budowania aplikacji w trybie 64-bitowym, a nie w 32 bitach

Edit:

Zazwyczaj, w jaki rodzaj Software, zwiększenie liczby rejestrów o będzie korzystne?

+2

64-bitowa wersja systemu Windows zawiera przeglądarkę Internet Explorer w wersjach 32-bitowych i 64-bitowych, ale wersja 32-bitowa jest domyślna, ponieważ wiele wtyczek IE ma format 32-bitowy i nie można ich załadować w 64-bitowej przestrzeni procesowej. Chrome jest 32-bitowy prawdopodobnie z tego samego powodu. –

+0

możliwy duplikat [64-bitowych korzyści wydajności] (http://stackoverflow.com/questions/3343812/64-bit-performance-advantages), [Jakie są zalety i wady 64-bitowego/32-bitowego poziomu niższego poziomu ?] (http://stackoverflow.com/questions/1282206/what-are-the-lower-level-level-advantages-and-disadvantages-64-bit-32-bit) –

+0

Jeśli masz 32- baza kodu bitowego, zacznij pracę aż do 64-bitów. Będzie istnieć duża korzyść dla niektórych istniejących przetwarzanych danych, ale mniej dla wewnętrznych elementów procesora, ponieważ sama koordynacja/logika będzie prawie dwukrotnie większa i nieco wygładzi rzekomy wzrost wydajności.Ale jest to wystarczająco ważne, aby pozbyć się warstwy zgodności. – ActiveTrayPrntrTagDataStrDrvr

Odpowiedz

8

64 (x86_64) bitów jest głównym nurtem teraz . 2 wielkie zalety tutaj:

  • Dostępne więcej pamięci bez żadnych sztuczek
  • Więcej ogólnego przeznaczenia i dodatkowy procesor rejestruje

Ale masz małe disadvatage też:

  • więcej pamięci zużycie (zwykle około 20-30% większe niż 32-bitowe)

Myślę, że Google Chrome działa w trybie 32-bitowym w systemie Windows, ponieważ istnieje zbyt wiele 32-bitowych wtyczek (jak Flash). Istnieje również wersja dla 64-bitowego systemu Linux.

Edycja na dodatkowe pytanie

Zazwyczaj otrzymasz korzyści, jeśli aplikacja korzysta z matematyki (64-bitowy), kodowanie arytmetyczne/kodowanie/pakowania/rozpakowywania, kryptografii.

Zobacz również w IBM 64-bitowe decydentem w podręczniku http://www.onitecservice.com.br/produtos/arquiv_pdf/nocona64bit_onitec_service.pdf

Jakie rodzaje wniosków będzie i nie będzie skorzystać z przełącznika z 32-bitowej do 64-bitowej?

W kolejności od największego do najmniejszego korzyści, typy to:

  • I/O intensywny - Każda aplikacja, która spędza więcej czasu z pobieraniem danych z urządzeń niż przetwarzanie go: Back baza danych koniec, e-commerce, CRM, ERP, SAP, SAS, różne aplikacje o znaczeniu krytycznym i pionowym oraz wszelkie inne aplikacje, które mają duże wymagania dotyczące pamięci. W przypadku tych aplikacji powinny być widoczne znaczące ulepszenia wydajności z 64-bitowego sprzętu , systemów operacyjnych i sterowników urządzeń, a także eliminacja nakładek pamięci i innych inhibitorów wydajności.
  • Intensywne obliczenia - Komputery wysokowydajne (HPC) i naukowe/techniczne komputerowe, w tym nauki przyrodnicze, badania geofizyczne; zaawansowane renderowanie grafiki; strumieniowe wideo i inne aplikacje, które spędzają więcej czasu na przetwarzanie danych niż ich pobieranie.
  • Infrastruktura bramy/bezpieczeństwa - Serwery SSL, usługi katalogowe, buforowanie internetowe i interfejsy baz danych . Te aplikacje mogą korzystać z przełącznika. Należy skontaktować się z poszczególnymi dostawcami oprogramowania, aby poznać ich plany wykorzystania funkcji 64-bitowych.
  • Standardowa infrastruktura - Ta klasa generalnie nie odniesie dużych korzyści z przetwarzania 64-bitowego. Aplikacje obejmują serwery plików i drukarek, aplikacje biznesowe o niskiej lub niekrytycznej architekturze oraz aplikacje starszej generacji, których ponowne zapisanie na 64 bity nie jest prawdopodobne.
+0

20-30% wydaje się być ogromne i trudno w to uwierzyć. Czy masz jakieś źródło? – bames53

+1

Nawet jeśli wartość 20-30% jest prawdziwa, maszyny 64-bitowe zwykle mają znacznie więcej pamięci niż maszyny 32-bitowe. W końcu cały powód posiadania 64-bitowych procesorów jest taki, że możesz adresować więcej niż 4 GB pamięci RAM. Ludzie budujący maszyny 64-bitowe z tylko 4 GB pamięci RAM całkowicie nie rozumieją tego. –

+1

@ bames53: Biorąc pod uwagę, że wskaźniki będą na ogół dwukrotnie większe w aplikacji 64-bitowej w porównaniu z aplikacją 32-bitową, jest to dość wiarygodne, chociaż nigdy się nie sprawdzałem. –

0

Jeśli masz możliwość skompilowania 64-bitowego celu, powinieneś to zrobić (imho). Możesz spróbować i przeanalizować swoją aplikację, aby sprawdzić, czy istnieje rzeczywista potrzeba (limity zużycia pamięci itp.) - ale ja dla jednego lubię widzieć znacznik "64-bitowy" w moim narzędziu do zarządzania aplikacjami, gdy przewijam uruchomione procesy.

Istnieje kilka zalet aplikacji w trybie 64-bitowym, z których główną przyczyną jest większa dostępność pamięci. Jeśli twój kompilator prawidłowo obsłuży kompilację i zoptymalizuje kod odpowiednio, powinieneś być w stanie uzyskać dodatkową wydajność.

Spróbuj wykonać test "prawdziwego świata" - skompiluj zarówno 64-, jak i 32-bitowe i przygotuj wykresy wydajności. Zrobiłem to na aplikacji i wykazało ~ 20% zwiększenie wydajności (szybsze obliczenia) i ilość danych, które program mógł załadować nagle wydawał się "nieskończony".

(Mój najlepszy przypuszczenie o Chrome jest to, że opierając się na pewnym 3rd biblioteki strona działa w 32-bitowych tylko czy może korzystać z niektórych tylko 32-bitowy Windows API).

+0

w jaki sposób odpowiada na pytanie, które jest * Zastanawiam się, czy mogę uzyskać korzyści/zwiększenie wydajności do tworzenia aplikacji w trybie 64 bitów *? –

+0

Muszę się z kimś zgodzić - nie wspomniałeś o żadnych zaletach, po prostu powiedziałeś, że należy kompilować do wersji 64-bitowej bez żadnych wskazówek czy uzasadnień. –

+0

@justsomebody - masz rację - skupiłem się głównie na "dlaczego nie Chrome działa z 64-bitową" częścią. Zmieniono, by lepiej odpowiedzieć na prawdziwe pytanie. – mbanzon

0

Zupełnie zeskanowany http://en.wikipedia.org/wiki/64-bit Istnieją plusy i minusy, aby uzyskać szczegółowe informacje, spójrz na tę stronę wikipedii. Jak wspomniano, główną zaletą 64-bitowych wersji aplikacji jest możliwość uzyskania dostępu do większej liczby rejestrów w architekturze x86-64.

Podaj także tę stronę, nic nie wskazuje na to, że po wyjęciu z pudełka można uzyskać znaczący przyrost wydajności. Trzeba by było dostroić aplikację, aby korzystać z dostarczanych funkcji, tj. Więcej rejestrów i więcej pamięci, ponieważ te same dane zajmują więcej miejsca w pamięci (ze względu na dłuższe wskaźniki i ewentualnie inne typy oraz dopełnienie wyrównania).

Według W/P, większe zużycie pamięci jest prawdopodobnie główną wadą. Krótko mówiąc, zysk może być większy, ale twój program musiałby się nieco zmienić, aby z niego skorzystać. Sugerowałbym testowanie twojego programu na obu architekturach, aby sprawdzić, czy robi on natychmiastową różnicę (bez zmiany czegokolwiek).

Powiązane problemy