Sto facendo un po 'di lavoro di trading finanziario. Ho un set di simboli di borsa ma hanno uno schema molto chiaro: è composto da due caratteri AB
, AC
AD
e il mese corrente è un numero di quattro cifre: 1503
, 1504
, 1505
. Alcuni esempi sono:come mappare una stringa specializzata nel numero intero specificato
AB1504
AB1505
AC1504
AC1505
AD1504
AD1505
....
Dal momento che queste stringhe sono così ben progettati fantasia, voglio mappare (hash) ciascuno della stringa in un numero intero univoco in modo che possa utilizzare il numero intero come indice di matrice per l'accesso veloce, dal momento che ho un sacco di recuperi all'interno del mio sistema e std::unordered_map
o qualsiasi altra mappa hash non sono abbastanza veloci. Ho dei test che dimostrano che la mappa hash generale ha un livello di latenza di cento nanosecondi mentre l'indicizzazione dell'array è sempre inferiore a 100 nanos. il mio caso ideale sarebbe, ad esempio, AB1504
mappe a numero intero 1
, AB1505
mappe a 2
...., quindi posso creare una matrice all'interno per accedere alle informazioni relative a questi simboli molto più velocemente. Sto cercando di capire alcuni algoritmi di hash o altri metodi che possono raggiungere il mio obiettivo ma non sono riuscito a scoprirlo. Ragazzi, avete qualche suggerimento su questo problema?
Un'idea semplice: visualizzare il modello come numero esadecimale (o base immaginaria superiore) e convertirlo in decimale per ottenere un numero univoco. sebbene non inizi da 0 e non siano una conseguenza – Emadpres
Puoi anche provare qualcosa come comprimere i dati (zlib, Huffman, lzw, ecc.) e pre-condividere i dati di decompressione (riutilizzarli per tutti i tuoi messaggi o "evolvere") "deterministicamente su ciascun lato della comunicazione) in modo che i messaggi non abbiano i dati di" intestazione "come overhead. –
Avete qualche informazione in più sul formato numerico? Come fanno le prime due cifre che rappresentano anni dopo il 2000? Che cosa rappresentano le lettere, se non altro? Devi occuparti di cose prima di AA1501 (o simili)? – holroy