LockTime

Note

Leggere uno schermo senza rallentarlo

Catturare, leggere, cifrare, indicizzare: circa un terzo di secondo, circa l'uno per cento di un core. Tre decisioni che ci hanno portati lì.

Una sola linea sottile che attraversa un campo chiaro, quasi piatta.

Il costo di una cronologia dello schermo si paga a ogni intervallo, per sempre, in secondo piano, mentre stai cercando di fare altro. Quindi deve arrotondare a niente. Catturare un fotogramma con ScreenCaptureKit, leggerne il testo con Vision, cifrarlo, scriverlo e indicizzarlo richiede circa un terzo di secondo e circa l'uno per cento di un singolo core.

Il lavoro più economico è quello saltato

Gran parte di quel budget non viene mai speso, perché quasi tutti gli intervalli finiscono al controllo del cambiamento: un confronto con il fotogramma precedente che non costa quasi niente e decide che qui non c'è nulla da tenere. Come funziona quel controllo è una nota a parte.

Lo stesso testo non si legge due volte

Il riconoscimento del testo è il passaggio caro. Quando un fotogramma è abbastanza vicino al precedente da non poterne aver cambiato le parole, LockTime porta avanti il testo di prima invece di rieseguire Vision. Leggere uno schermo richiede circa 70 ms. Riusare quello che è già stato letto ne richiede circa 1.

L'interfaccia non aspetta la libreria

Elencare una giornata dentro una libreria di 20.000 schermate richiede circa 1 millisecondo. Comporre la striscia di momenti di una giornata intera registrata al secondo — 86.400 — richiede 5,4 ms, comodamente dentro un singolo fotogramma da 16 ms. La finestra resta alla frequenza del display sia che la libreria contenga una settimana sia che contenga un anno.

Una sola build per entrambe le macchine

LockTime è Swift e SwiftUI dall'inizio alla fine, distribuita come un'unica versione universale per Apple Silicon e Intel. Quel vincolo ha i denti. La ricerca per significato, opzionale, salva i suoi embedding come float a 16 bit, e il modo ovvio di scriverli in Swift si chiama Float16, che esiste solo su arm64. Scritta così, l'app compila e supera i test su un Mac Apple Silicon e non si può costruire per Intel in alcun modo. L'archivio scrive invece IEEE binary16 attraverso vImage, e un test fissa la disposizione dei byte perché resti così.

Niente di tutto questo si vede, ed è proprio il punto. Non dovresti accorgerti che sta funzionando.

Tutte le note
Scarica 0.1.6 · 6.6 MB macOS 14 o successivo · Apple Silicon e Intel · Gratis finché è agli inizi.