@The_Ghost тежко за какво, за компилиране или за изпълнение? И в двата случая:
GeSHi (Perl):
/\D+/
/[^\d]+/
Няма никакъв backtracking и подозирам че времето за изпълнение ще са много близки. Аз лично предпочитам char class от гледна точка, че е лесно за добавяне на нови символи, но това са дреболии.
За backtracking-а може да говорим много. Просто енджините ала Perl могат да имат катастрофален backtracking. Имат тъй наречените патологични изрази. Та ungreedy е пачване на по-голям backtracking. Само заради това писах в темата. Ако може да напишеш регулярен израз без backtracking и естествено без ungreedy нещата ще са доста по-добре.
Също за оптимизации на Perl изрази е хубаво да се ползват atomic group и atomic repetition. Така например всеки лаик който пише:
GeSHi (Perl):
/.+<\/head>/
И се чуди защо по дяволите му е бавен израза, ако го беше написал:
GeSHi (Perl):
/.++<\/head>/
Щеше да разбере, че има backtracking от края на стринга обратно до `</head>`.