Libreria di classi generiche - bug, descrizione, domande, caratteristiche d'uso e suggerimenti - pagina 35
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Quasi impossibile e se ti imbatti in uno, l'accesso è ancora super efficace.
La collisione a qualsiasi livello di efficienza è un male. Grazie per la risposta. Lo terrò presente.
La collisione a qualsiasi livello di efficienza è un male. Grazie per la vostra risposta. Lo terrò presente.
Le hashmap non sono per definizione prive di collisioni.
Domanda sulle collisioni. È possibile incorrere in una collisione in un caso del genere?
Se sono stati prodotti 27.000 dischi.
Avrete costantemente delle collisioni, specialmente quando la collezione cresce (si ridimensiona). Poiché l'hash è ulteriormente troncato al numero della banda, e c'è sempre un numero limitato di essi (idealmente uguale a uno).
Conclusioni:
1. Non è la stabilità crittografica della funzione hash che conta per la mappa, ma la sua velocità. La funzione di hash deve solo fornire una buona casualità ed è tutto.
2. Il ridimensionamento è meglio evitarlo con tutti i mezzi. È il ridimensionamento che causa il principale calo, non le collisioni della funzione hash. Quando possibile, inizializzate sempre la collezione con un numero prestabilito di elementi. Anche se non li conosci esattamente, dai un numero approssimativo - aiuterà molto l'algoritmo.
3. Le collisioni sono un meccanismo di compattazione regolare. Attraverso le collisioni, è possibile memorizzare tre record con id, diciamo, 159, 4'569'209, 29'459'876 in array di lunghezza tre, piuttosto che di lunghezza 30 000 000, anche se gli ultimi due valori cadono entrambi nella banda con indice 2.
2. Il ridimensionamento è meglio evitarlo con tutti i mezzi. È il ridimensionamento, non le collisioni delle funzioni hash, che è lo svantaggio principale. Quando possibile, inizializzate la collezione con un numero prestabilito di elementi. Anche se non li conosci esattamente, dai un numero approssimativo - è un grande aiuto per l'algoritmo.
Si prega di mostrare con un esempio.
Per ora uso solo questo.
Per favore, mostratemi un esempio.
Per ora uso solo questo.
Quando create una collezione CHashMap, usate uno dei costruttori che accetta il parametro capacity. Vedi il mio articolo su CDicionary per i dettagli sulle prestazioni durante il ridimensionamento. C'è un walkthrough completo di questo algoritmo.
Ho trovato un comportamento molto insolito in CHashMap.
Sembra che una chiave sia presumibilmente aggiunta, ma non si può leggere nulla da essa. Tuttavia, non appena aggiungo di nuovo la chiave, diventa leggibile!
È una BORSA?
Se sostituisci il prezzo1,75141 nell'esempio con un altro, funzionerà correttamente.
È stato infernalmente difficile rilevare questo comportamento in un codice enorme senza debugging e creare un esempio così conciso.
Inizializza sempre l'insieme con un numero predeterminato di elementi, quando possibile. Anche se non li conosci esattamente, dai un numero approssimativo: sarà di grande aiuto per l'algoritmo.
Nell'esempio sopra ho cercato di impostare la capacità attraverso il costruttore. A partire da un certo valore di capacità l'esempio inizia a funzionare correttamente.
Ma credo che questa sia una coincidenza.
Ho trovato un comportamento molto insolito in CHashMap.
Sembra che una chiave sia presumibilmente aggiunta, ma non si può leggere nulla da essa. Tuttavia, non appena la chiave viene aggiunta di nuovo, diventa leggibile!
È una BORSA?
Se sostituisci il prezzo1,75141 nell'esempio con un altro, funzionerà correttamente.
È stato infernalmente difficile rilevare questo comportamento in un codice enorme senza debugging e creare un esempio così conciso.
Corretto, sarà nella versione di oggi.
Grazie! Vedo la modifica.
Nell'esempio sopra, ho cercato di impostare la capacità tramite il costruttore. A partire da un certo valore di capacità, l'esempio inizia a funzionare correttamente.
Ma credo che questa sia una coincidenza.
Sì, c'è un glitch su glitch. Sconsiglio vivamente di usare Generic.