indubbiamente il thread ti velocizza, devi solo provare (e avrai qualche mal di testa per descrivere l'environment del tuo thread in modo che non si blocchi con gli altri).
Ora per quanto riguarda le specifiche, non so il tuo problema in generale, ovviamente per sapere se c'è una variazione devi mantenere tutte le schede memorizzate da qualche parte (e non è comodo) e soprattutto devi ogni volta controllare tutto il buffer (da qui dividere in thread potrebbe aiutarti).
La dimensione di quel buffer non è un parametro che scegli con leggerezza.
Vedi anche con quanta frequenza cambiano le schede: frequenza rapida devi controllare byte a byte, scrivere (per il check successivo) e avviare un nuovo confronto. Per buffer molto grandi anche coi thread puoi perderti input (ma questa è una considerazione architetturale).
Al contrario una frequenza bassa garantirebbe la consistenza dei dati, ma di contro fai una serie di operazioni non necessarie (visto che il check byte a byte ti darà true in molti casi).
Come vedi queste sono considerazioni di base che puoi fare indipendentemente dal linguaggio e sono domande che mi faccio io pensando al problema via via che dai indicazioni.
Come ti dicevo, tu se hai l'idea di insieme, io no. So solo che in ogni caso l'opzione confronta sempre e cmq il contenuto la terrei solo se obbligata