Je kouzelné sledovat tady diskuse o tom, jak je paralelizace náročná, že je to potřeba testovat atd... Přitom stačí použít odpovídající nástroj.
Vezmu Go, vstupní procedura čte soubor po řádcích a ty posílá na vstupní channel. Odhad cca 15-20 řádků i s ošetřením chyb. Samotná výkonná funkce čte v nekonečné smyčce řádky ze vstupního kanálu, provede ty 3 regulární výrazy a pokud to projde, data vytiskne nebo je pošle na výstupní channel. (Odhad dalších 15-20 řádků.) Na výstupní channel je připojena procedura která vyselektovaná data zpracuje. Main spustí ve smyčce paralelně 100x (nebo třeba 1000x) výkonnou proceduru, a paralelně spustí čtení souboru. (Odhad tak 25-30 řádků včetně všech deklarací a serepetiček okolo.) Celé to bude zhruba tak rychlé, jako přečtení toho souboru. Není potřeba nic testovat (ale kdybyste chtěl, benchmarking je součástí standardní knihovny a je triviální), maximálně tak vyzkoušet kolikanásobná paralelizace má ještě smysl.
Takže se bavíme o programu délky cca 70 řádků a jedná se o elementární pattern (pipeline => fan out - process - fan in). Za tu dobu co tady diskutujete to máte napsané, i když o Go nic nevíte. Navíc nepochybuji o tom, že v jiných jazycích včetně C# naleznete ekvivalentní prostředky, byť možná nebudou tak přímočaré a jednoduché k použití, jako u Go. Ale i kdyby měl ten Váš program 150 řádků, o čem se proboha bavíme? Jaké schválení potřebujete a kolik času si představujete, že budete potřebovat? A motat do toho ještě DB, jenom indexovování sežere spoustu času, a tady se jedná o jednorázový scan.
P.S.: U Go jako bonus zdarma dostanete multiplatformnost, takže vám to poběží ve Windows, *BSD, macOS i Linuxu, takže si můžete vybrat development platformu a na ostatní to kroskompilovat.