- Qual è la differenza tra la creazione di un progetto .NET per il targeting a 32 o 64 bit?
- Ci sono computer che non sono in grado di eseguire programmi a 32 bit e solo 64 bit?
- I programmi x64 vengono eseguiti due volte più velocemente?
L'unica vera differenza che potresti notare quando usi un HLL sta per essere la dimensione del codice, e scoprire che alcune funzionalità / librerie non sono ancora disponibili per x64. Oh, e il codice x64 tende ad essere meno performante, almeno sotto .NET. L'app su cui sto lavorando è circa il 20% più veloce quando compilo per x86. Non so se è perché utilizzo più larghezza di banda del bus spostando quantità di 8 byte in giro, o se c'è qualche "chunking" in corso per adattare le API a 32 bit a 64 bit.
Al livello di cui stai parlando (.NET) c'è ben poca differenza. Quando si utilizza il codice completamente gestito, il JIT compilerà automaticamente il codice e funzionerà più o meno lo stesso, con caratteristiche di prestazioni diverse. Per alcune cose sarà più veloce (elaborazione di molti dati, i dati potrebbero essere elaborati in blocchi da 64 bit, più registri disponibili, ecc.) E per altri più lenti (i dati a 64 bit (cioè i puntatori) sono più lenti da caricare nella cache per gli avviatori , che significa più dati e trasferimenti più lenti dalla memoria principale).
Devi solo preoccuparti della differenza quando usi un codice non gestito. Questo blog ha una buona dose di problemi.
I programmi .Net che verranno scritti per sistemi a 64 bit avranno uno spazio di indirizzamento più grande, e quindi saranno molto più veloci dei programmi basati su x86-32 bit. Anche i più recenti compilatori di linguaggi .NET producono codice molto ottimizzato. Il JIT è anche migliorato negli ultimi anni e ora puoi fare l'ottimizzazione JIT multi-core. Anche i debugger sono migliorati. Nel frattempo, viene prodotto un codice migliore e ottimizzato per i sistemi basati su 64 bit.
Leggi altre domande sui tag architecture 64-bit .net cpu x86