Domanda

Me lo chiedo questo per lungo tempo che non ho mai avuto l'educazione "formale" di informatica (sono in liceo), quindi per favore scusa la mia ignoranza in materia.

Su una piattaforma che supporta i tre tipi di interi elencati nel titolo, che uno è migliore e perché? (So ??che ogni tipo di int ha una lunghezza diversa in memoria, ma non sono sicuro che cosa ciò significhi o come influenza le prestazioni o, dal punto di vista di uno sviluppatore, che si ha più vantaggi rispetto agli altri).

Grazie in anticipo per il vostro aiuto.

È stato utile?

Soluzione

"Better" è un termine soggettivo, ma alcuni interi sono più performante su alcune piattaforme.

Per esempio, in un computer a 32 bit (riferimento da termini come piattaforma a 32 bit e Win32) la CPU è ottimizzato per gestire un valore di 32 bit alla volta, e il 32 si riferisce al numero di bit che le CPU può consumare o produrre in un unico ciclo. (Questa è una spiegazione molto semplicistica, ma ottiene l'idea generale in tutto).

In un computer a 64 bit (la maggior parte dei processori AMD e Intel più recenti rientrano in questa categoria), la CPU è ottimizzato per gestire i valori a 64 bit alla volta.

Quindi, su una piattaforma a 32 bit, un intero a 16 bit caricato in un indirizzo a 32 bit dovrebbe avere 16 bit azzerati in modo che la CPU possa operare su di esso; un intero a 32 bit sarebbe immediatamente utilizzabile senza alcuna modifica, e un intero di 64 bit dovrebbe essere operati in due o più cicli di CPU (una volta per i bassi 32-bit, e poi ancora per le alte 32 bit) .

Al contrario, su una piattaforma a 64-bit, interi a 16 bit dovrebbe avere 48 bit azzerati, interi a 32 bit dovrebbero avere 32 bit azzerati, e interi a 64 bit potrebbero essere operato immediatamente.

Ogni piattaforma e CPU ha un po-ità 'native' (come 32 o 64), e questo di solito limita alcune delle altre risorse che possono essere accessibili da detta CPU (per esempio, la limitazione di memoria 3GB / 4GB di 32 processori -bit). Il processore della famiglia 80386 (x86 e versioni successive) processori realizzati a 32 bit la norma, ma ora le aziende come AMD e Intel stanno quindi facendo 64-bit la norma.

Altri suggerimenti

Per rispondere alla tua prima domanda, l'utilizzo di un 16 bit vs un 32 bit vs 64 un po 'intero dipende dal contesto che è usato. Pertanto, davvero non si può dire uno è meglio sopra l'altro, per dire. Tuttavia, a seconda di una situazione, utilizzando uno sopra l'altro è preferibile. Considerate questo esempio. Diciamo che si dispone di un database con 10 milioni di utenti e si desidera archiviare l'anno in cui sono nati. Se si crea un campo del database con un numero intero a 64 bit, allora si hanno esaurito 80 megabyte di storage; mentre, se si sceglie di usare un campo a 16 bit, si abitua solo 20 megabyte di storage. È possibile utilizzare un campo a 16 bit qui perché l'anno le persone nascono è più piccolo il più grande numero a 16 bit. In altre parole 1980 1990, 1991 <65535, supponendo che il campo non è firmato. Tutto sommato, dipende dal contesto. Spero che questo aiuta.

Una risposta semplice è quella di utilizzare il più piccolo si sa sarà sicuro per la gamma dei possibili valori che conterrà.

Se si conoscono i valori possibili sono costretti a essere più piccolo di un massimo di lunghezza intero a 16 bit (ad esempio, il valore corrispondente a quello che i giorni dell'anno è - sempre <= 366) quindi utilizzare tale. Se non siete sicuri (ad esempio l'ID del record di una tabella di un database che può avere qualsiasi numero di righe), quindi utilizzare Int32 o Int64 a seconda del giudizio.

altro può probabilmente vi darà un migliore senso di dei vantaggi di prestazioni a seconda di cosa linguaggio di programmazione che si sta utilizzando, ma i tipi più piccoli utilizzano meno memoria e quindi sono 'migliore' per l'uso, se non avete bisogno di più grande.

Solo per riferimento, un intero a 16 bit mezzi ci sono 2 ^ 16 possibili valori - generalmente rappresentati come tra 0 e 65.535. valori a 32 bit vanno fino a 2 ^ 32 o poco più di 4,29 miliardi valori.

Questa domanda Nelle CPU a 32 bit, è un tipo 'intero' più efficiente di un tipo di 'breve'? possibile aggiungere un po 'di buone informazioni.

Dipende se velocità o stoccaggio dovrebbero essere ottimizzati. Se siete interessati in termini di velocità e si esegue SQL Server in modalità a 64 bit quindi chiavi a 64 bit sono quello che ti serve. Un processore 64 bit eseguita in modalità a 64 bit, è ottimizzato per utilizzare 64 numeri di bit e indirizzi. Allo stesso modo, un processore a 64 bit in esecuzione in modalità a 32 bit è ottimizzato per utilizzare 32 numeri di bit e indirizzi. Ad esempio, in modalità a 64 bit, tutti spinte e pop sopra la pila sono 8 byte ecc fetch anche dalla cache e memoria sono ancora ottimizzati per 64 numeri bit e indirizzi. Il processore, funzionante in modalità a 64 bit, può essere necessario più cicli macchina per gestire un numero a 32 bit come un processore, in esecuzione in modalità a 32 bit ha bisogno di più cicli macchina per gestire un numero a 16 bit. Gli incrementi tempo di elaborazione vengono per molte ragioni, ma si pensi all'esempio di allineamento memoria: Il numero 32 bit non può essere allineato su un 64 bit di confine solidale quali mezzi di caricamento del numero richiede spostamento e mascherare il numero dopo il caricamento in un Registrati. Come minimo, ogni numero a 32 bit deve essere mascherato prima di ogni operazione. Stiamo parlando di almeno dimezzare la velocità effettiva del processore durante la manipolazione di 32 o 16 bit interi in modalità a 64 bit.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top