2012-01-08 5 views
15

Ho appena notato che per esempio un'applicazione famosa come chrome non aveva 64 versioni almeno sotto windows.C'è qualche grande vantaggio di avere le sue applicazioni di sviluppo C++ in esecuzione in una modalità a 64 bit?

Nella mia azienda scrivo applicazioni che funzionano con una versione a 64 bit di Windows in modalità a 32 bit.

mi chiedo se avrei potuto avere un po 'di guadagno vantaggi/prestazioni per creare applicazioni in modalità a 64 bit anziché a 32 bit

Edit:

In genere, in che tipo di software, l'aumento del numero di registri sarà beneficiato?

+2

La versione a 64 bit di Windows viene fornita con Internet Explorer in entrambe le varianti a 32 e 64 bit, ma quella a 32 bit è l'impostazione predefinita perché molti plug-in di IE sono solo a 32 bit e non vengono caricati in uno spazio di processo a 64 bit. Chrome è probabilmente a 32 bit per lo stesso motivo. –

+0

possibile duplicato di [64-bit Performance Advantages] (http://stackoverflow.com/questions/3343812/64-bit-performance-advantages), [Quali sono i vantaggi e gli svantaggi di livello inferiore di 64-bit/32-bit ?] (http://stackoverflow.com/questions/1282206/what-are-the-lower-level-advantages-and-disadvantages-of-64-bit-32-bit) –

+0

Se hai un 32- bit code base, inizia a lavorare fino a 64-bit. Ci sarà un grande beneficio per alcuni processi di elaborazione dati esistenti, ma minore per gli interni del processore, poiché la coordinazione/logica stessa raddoppierà le sue dimensioni e in qualche modo attenuerà il supposto guadagno di prestazioni.Ma è abbastanza importante per sbarazzarsi del livello di compatibilità. – ActiveTrayPrntrTagDataStrDrvr

risposta

8

64 (x86_64) bit è mainstream ora . 2 grandi vantaggi qui:

  • Disponibile più memoria senza trucchi
  • più generico e processore aggiuntivo registri

Ma bisogna piccola disadvatage troppo:

  • Più memoria consumo (solitamente più grande del 20-30% rispetto a 32 bit)

Penso che Google Chrome funzioni in modalità a 32 bit in Windows perché ci sono troppi plugin a 32 bit (come Flash). Inoltre c'è la versione di Linux per 64 bit.

Edit per ulteriori domanda

In genere si otterrà benefici se l'applicazione utilizza la matematica (64-bit integer aritmetica), codifica/codifica/imballaggio/disimballaggio, la crittografia.

Anche guardare IBM a 64-bit del decisore Guida http://www.onitecservice.com.br/produtos/arquiv_pdf/nocona64bit_onitec_service.pdf

Quali tipi di applicazioni sarà e non approfittare del passaggio da 32 bit a 64 bit?

Al fine dalla più grande alla più vantaggio, i tipi sono:

  • I O intensive/- Qualsiasi applicazione che passa più tempo il recupero dei dati da dispositivi di elaborarlo: back banca dati fine, e-commerce, CRM, ERP, SAP, SAS, varie applicazioni business-critical e verticali e qualsiasi altra applicazione che abbia grandi requisiti di memoria. Nel generale queste applicazioni dovrebbero vedere miglioramenti significativi delle prestazioni dall'hardware a 64 bit, dai sistemi operativi e dai driver di periferica, nonché dall'eliminazione delle sovrapposizioni di memoria e di altri inibitori delle prestazioni.
  • Compute intensive - High Performance Computing (HPC) e scientifico/tecnico informatica, comprese le scienze della vita, la ricerca geofisica; rendering grafico high-end; video in streaming e qualsiasi altra applicazione che impiega più tempo a elaborare i dati che a recuperarli.
  • Gateway/infrastruttura di sicurezza - Server SSL, servizi di directory, caching Internet e front-end del database . Queste applicazioni possono trarre beneficio dallo switch. È necessario contattare lo i singoli fornitori di software per scoprire i loro piani per sfruttare le funzionalità a 64 bit.
  • Infrastruttura standard - Questa classe generalmente vedrà pochi vantaggi dall'elaborazione a 64 bit. Le applicazioni includono server di file e stampa, applicazioni aziendali a basso volume/non critici e applicazioni legacy che è improbabile che vengano riscritte per 64 bit.
+0

Il 20-30% sembra enorme ed è difficile da credere per la media. Hai qualche fonte per questo? – bames53

+1

Anche se la cifra del 20-30% è vera, le macchine a 64 bit di solito hanno molta più memoria di una macchina a 32 bit. Dopotutto, l'intera ragione di avere processori a 64 bit è tale da poter indirizzare più di 4 GB di RAM. Le persone che costruiscono macchine a 64 bit con solo 4 GB di RAM mancano del tutto. –

+1

@ bames53: Considerando che i puntatori avranno, in generale, anche il doppio delle dimensioni in un'applicazione a 64 bit rispetto a un'applicazione a 32 bit, questo è abbastanza credibile, anche se non ho mai controllato me stesso. –

0

Se si ha la possibilità di compilare per un obiettivo a 64 bit, è necessario farlo (imho). Potresti provare ad analizzare la tua applicazione per vedere se c'è un bisogno reale (limiti di consumo della memoria, ecc.) - ma per uno mi piace vedere l'indicatore "64 bit" nel mio strumento di gestione delle applicazioni quando faccio scorrere i processi in esecuzione.

Ci sono molti vantaggi delle applicazioni in modalità a 64 bit, il motivo principale è la memoria più disponibile. Se il compilatore gestisce correttamente la compilazione e ottimizza il codice di conseguenza dovresti essere in grado di ottenere prestazioni extra.

Provare e fare un test "mondo reale" - compilare in entrambi 64 e 32 bit e redigere alcuni grafici delle prestazioni. L'ho fatto su un'applicazione e ha mostrato un incremento delle prestazioni del ~ 20% (calcolo più veloce) e la quantità di dati che il programma potrebbe caricare improvvisamente sembrava "infinita".

(La mia ipotesi migliore su Chrome è che essi si affidano a qualche libreria 3rd party in esecuzione in 32 bit o forse con un po 'solo a 32 bit API di Windows.)

+0

in che modo risponde alla domanda, ovvero * Mi chiedo se potrei ottenere alcuni vantaggi/prestazioni per la realizzazione di applicazioni in modalità 64 bit *? –

+0

Devo essere d'accordo con qualcuno - non hai fatto alcun riferimento, hai appena detto che dovresti compilare a 64-bit senza linee guida o giustificazioni. –

+0

@justomebody - hai ragione - mi sono concentrato principalmente sul "perché Chrome non funziona a 64 bit". Modificato per rispondere meglio alla vera domanda. – mbanzon

0

Shamlessly appena scansionato http://en.wikipedia.org/wiki/64-bit Ci sono pro e contro, per informazioni dettagliate, guarda la pagina di wikipedia. Come sottolineato in questo articolo, il vantaggio principale delle versioni a 64 bit dell'applicazione è la possibilità di accedere a più registri nell'architettura x86-64.

Dare anche quella pagina, non vi è alcuna indicazione che ci siano significativi guadagni di prestazioni fuori dalla scatola. Dovresti mettere a punto la tua applicazione per utilizzare le funzionalità che fornisce, vale a dire più registri e più memoria poiché gli stessi dati occupano più spazio nella memoria (a causa di puntatori più lunghi e possibilmente di altri tipi e riempimento di allineamento).

In base a W/P, l'utilizzo della memoria è probabilmente il principale svantaggio. In breve, il guadagno in termini di prestazioni può esserci, ma il tuo programma dovrebbe essere in qualche modo modificato per trarne vantaggio. Ti suggerirei di eseguire il benchmarking del tuo programma su entrambe le architetture per vedere se fa una differenza immediata (senza cambiare nulla).

Problemi correlati