Portál AbcLinuxu, 30. dubna 2025 19:39
Regulární výrazy jsem vždycky považoval za cosi "nečistého", co sice zjednoduší život (viz Perl), ale výkonově pomalé - prosté srovnávání řetězců by mělo být (intuitivně) rychlejší.
V oblíbeném skriptu mám hromadu (cca 150) regulárních výrazů. Jediným úkolem skriptu je uhodnout, ke kterému výrazu zadaný řetězec odpovídá a podle toho provést akci.
Protože jsem měl pocit, že v tomto místě může být úzké hrdlo aplikace, přemýšlel jsem, že bych regulární výrazy rozdělil do skupin (podle začátku) a matchoval na dvakrát - pokud bude sedět začátek, vlezu do patřičné skupiny a matchuju podruhé. Zrychlení sice konstatní, ale je rozdíl, jestli se v nejhorším případě matchuje 150 výrazů nebo nebo jenom 10.
Ejhle - matchování cca 150 výrazů (po předkompilování) trvá průměrně 0.00017s, zkompilování 0.057s (jenže to se dělá jenom jednou, takže to můžeme v klidu ignorovat).
Z toho plyne, zatím nemá smysl optimalizovat. QED.
Tiskni
Sdílej:
.match()
nad objektem téměř celé proběhne v C.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.