Einen Bildschirm lesen, ohne ihn zu bremsen
Aufnehmen, lesen, verschlüsseln, indizieren — etwa eine drittel Sekunde, etwa ein Prozent eines Kerns. Drei Entscheidungen, die dahin geführt haben.
Ein Bildschirmverlauf kostet in jedem Intervall, dauerhaft, im Hintergrund, während Sie etwas anderes tun wollen. Also muss der Preis auf null gerundet werden. Ein Bild mit ScreenCaptureKit aufnehmen, seinen Text mit Vision lesen, verschlüsseln, schreiben und indizieren dauert etwa eine drittel Sekunde und braucht etwa ein Prozent eines einzelnen Kerns.
Am günstigsten ist die Arbeit, die entfällt
Der größte Teil dieses Budgets wird nie ausgegeben, weil die meisten Intervalle bei der Änderungsprüfung enden — einem Vergleich mit dem vorherigen Bild, der fast nichts kostet und feststellt, dass hier nichts Behaltenswertes ist. Wie diese Prüfung arbeitet, ist eine eigene Notiz.
Derselbe Text wird nicht zweimal gelesen
Die Texterkennung ist der teure Schritt. Wenn ein Bild dem vorherigen so nahe kommt, dass sich seine Wörter nicht geändert haben können, trägt LockTime den vorherigen Text weiter, statt Vision erneut laufen zu lassen. Einen Bildschirm zu lesen dauert etwa 70 ms. Bereits Gelesenes wiederzuverwenden dauert etwa 1 ms.
Die Oberfläche wartet nicht auf die Mediathek
Einen Tag aus einer Mediathek von 20.000 Aufnahmen aufzulisten dauert etwa 1 Millisekunde. Den Streifen für einen vollen Tag im Sekundentakt zu setzen — 86.400 Momente — dauert 5,4 ms und passt bequem in ein einzelnes 16-ms-Bild. Das Fenster bleibt bei der Bildrate des Displays, ob die Mediathek eine Woche oder ein Jahr enthält.
Eine Version für beide Maschinen
LockTime ist durchgehend Swift und SwiftUI und erscheint als eine universale Version für Apple Silicon und Intel. Diese Vorgabe hat Zähne. Die optionale Suche nach Bedeutung legt ihre Embeddings als 16-Bit-Fließkommazahlen ab, und der naheliegende Weg dafür in Swift heißt Float16 — den es nur auf arm64 gibt. So geschrieben, übersetzt die App auf einem Apple-Silicon-Mac und besteht ihre Tests, lässt sich für Intel aber überhaupt nicht bauen. Der Speicher schreibt stattdessen IEEE binary16 über vImage, und ein Test hält das Byte-Layout fest, damit es so bleibt.
Nichts davon ist sichtbar, und genau darum geht es. Sie sollen nicht merken, dass es läuft.