Ticker Valhalla comprime simboli di borsa in un solo int
Testo scritto con l’intelligenza artificiale a partire da una fonte citata, senza revisione umana prima della pubblicazione.
Una value class Java codifica ticker da 1 a 5 caratteri in 30 bit di un int, permettendo confronto e accesso senza oggetti separati.
Un value class Java chiamato Ticker codifica simboli di borsa da uno a cinque caratteri in 30 bit di un int, preservando l’ordine e consentendo confronti diretti senza decodifica1.
L’esempio arriva da Inside.Java, a firma di membri del team Java di Oracle. Rientra nelle value class di JEP 401, in anteprima in JDK 28. L’uso dell’int consente, in certe condizioni, la scalarizzazione: il singolo campo passa tra variabili, argomenti e ritorni senza creare un oggetto separato1.
La classe definisce un alfabeto fisso: ".0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ". Sono 37 simboli. Bastano sei bit per carattere. Cinque caratteri occupano 30 bit su 32. I due bit più alti restano inutilizzati, quindi il valore packed è sempre non negativo1.
Il costruttore valida la lunghezza del ticker: rifiuta stringhe vuote e più lunghe di cinque. Per ogni carattere calcola un codice tra 1 e 37, usando l’indice nell’alfabeto e sommando uno. Lo zero resta riservato al padding. Un carattere non supportato produce codice zero e fa scattare un’eccezione. Il ciclo sposta a sinistra i codici di sei bit e li concatena nell’ordine del simbolo. A fine ciclo sposta l’intera sequenza a sinistra nello spazio di 30 bit. Le posizioni vuote a destra restano a zero e segnano la fine del simbolo in lettura1.
La ricostruzione in toString legge gli slot da sinistra verso destra. Parte dalla posizione di bit 24. Esegue uno shift a destra senza segno, poi applica la maschera 0x3f per isolare i sei bit del carattere. Se il codice è zero, interrompe: il costruttore usa lo zero solo come padding. Altrimenti sottrae uno e ricava il carattere dall’alfabeto. Prosegue fino a cinque slot o al primo zero. Non serve un campo lunghezza1.
L’ordinamento delle stringhe si conserva nella codifica. L’alfabeto rispetta l’ordine di String.compareTo su questi caratteri: il punto prima delle cifre, le cifre prima delle lettere maiuscole. Il primo carattere occupa lo slot più alto, quindi il primo punto di differenza guida anche il confronto tra interi. Se un simbolo è prefisso di un altro, gli zeri del padding fanno ordinare prima il più corto. Poiché i due bit alti sono zero, il packed è non negativo. Bastano confronti signed su int per riflettere l’ordine dei ticker: negativo, zero, positivo. La classe implementa Comparable e delega a Integer.compare(packed, other.packed)1.
Ticker implementa anche CharSequence. length conta gli slot di sei bit finché non incontra uno zero. charAt verifica i limiti, calcola lo shift 24 meno 6 per l’indice richiesto, isola i sei bit e restituisce il carattere dall’alfabeto. Queste operazioni leggono direttamente dal packed, senza creare prima una String1.
Confronto e ordinamento non richiedono conversioni o decodifiche intermedie. La natura di value class elimina l’identità e apre alla possibile scalarizzazione, con benefici di velocità quando l’allocazione dell’oggetto viene evitata e fluisce il solo int1.
L’articolo rimanda a una sezione prestazioni che approfondisce quando la scalarizzazione si applica e quanto può incidere sulla velocità effettiva1.
Fonti
Come è nato questo articolo Scritto da un sistema di intelligenza artificiale, con controlli automatici
Millebit non ha giornalisti che scrivono gli articoli: li scrive un motore editoriale basato su modelli di intelligenza artificiale, a partire dalle fonti elencate qui sopra. Prima di uscire, ogni testo passa questi controlli:
- Rilettura. Un passaggio toglie i tic della prosa generata da un modello, come i contrasti costruiti e le frasi che annunciano invece di informare, senza toccare fatti e fonti.
- Fedeltà alle fonti. Un passaggio dedicato toglie ogni affermazione che le fonti non sostengono. Valutazione su questo pezzo: 10/10.
- Anti-cliché. Un filtro scarta frasi fatte, enfasi e tic della prosa artificiale: superato.
- Giudizio editoriale. Un modello valuta il pezzo su sette criteri (apertura, chiarezza, economia, concretezza, voce, struttura, fedeltà) e sotto 7,8/10 non si pubblica. Questo articolo ha preso 8,4/10 dopo 1 revisione.
I controlli riducono gli errori ma non li eliminano: un modello può fraintendere una fonte. Per le decisioni importanti, risali alla fonte originale. Se trovi un errore, segnalacelo.
Per vedere Millebit nelle notizie principali di Google, aggiungilo alle tue fonti preferite. Oppure segui l’edizione di oggi, il feed RSS o La Sintesi.