Quali sono gli NSDictionaries o le proprietà degli oggetti più veloci?

1

Se abbandono la creazione di oggetti modello che uso solo per passare informazioni e utilizzare invece NSDictionaries e avere una costante per le chiavi nello stesso punto in cui sto usando il modello, ha un impatto sulle prestazioni?

Ad esempio: se inizio a passare NSDictionaries a celle personalizzate invece di creare classi Model per la cella, sarà perfetto se non fornirò alcun metodo nella classe di quel modello.

L'ho visto molto nelle API iOS come NSNotifications. Raramente ho visto questo in Java, dove le collezioni vengono utilizzate come parte integrante di un'API.

    
posta Amogh Talpallikar 04.07.2013 - 09:22
fonte

1 risposta

4

Le proprietà dell'oggetto sono generalmente di almeno un ordine di grandezza più veloce per l'accesso. Proprietà la velocità di accesso è anche prevedibile, mentre l'accesso alla tabella hash può richiedere un tempo lineare.

L'accesso alla proprietà può essere fatto semplicemente accedendo direttamente ad alcuni indirizzi di memoria.

L'accesso alla tabella hash richiede che tu ottenga il valore hash per la stringa (calcola o prendi un hash in cache - entrambi prendono già molte istruzioni), quindi passa a tutte le voci che corrispondono all'indice del bucket e fanno costosi confronti tra stringhe fino a quando la corrispondenza non viene trovata o non trovata.

Ancora per molti tipi di applicazioni la velocità della tabella hash non è male. In molte implementazioni linguistiche le proprietà dell'oggetto sono accessi alla tabella hash (Ruby, CPython, PHP) e mentre fa queste lingue estremamente lenti in senso oggettivo, sono ancora abbastanza veloci per molti tipi di applicazioni.

Ciò presuppone anche che l'implementazione di NSDictionary sia una tabella hash, qualsiasi altra implementazione sarà ancora più lenta.

    
risposta data 04.07.2013 - 14:05
fonte

Leggi altre domande sui tag