Поскольку вы, вероятно, компилируете новое регулярное выражение каждый раз, когда будете делать regexec()
, это, вероятно, будет немного медленнее, чем использование strncmp()
для проверки ключевого слова, например, "crown =", а затем проверка, еслизначение равно "\" larry \ "".
Я предполагаю, что вы могли бы создать систему, которая предварительно анализирует ключевые слова и значения и сохраняет какой-то список, словарь или что-то подобное, указывающее на строку, или наоборот (каждая строка связана с набором комбинаций ключевое слово = "значение").Это можно сделать один раз, и это облегчит работу во время поиска.
Но я недостаточно знаю ваши цели и ваш существующий код, чтобы понять, имеет ли это смысл для вашей ситуации.
Другими словами, вам придется профилировать это, чтобы быть уверенным, но я думаю, что strncmp()
будет более производительным, чем комбинации regcomp()
и regexec()
.Регулярные выражения, конечно, гораздо более гибкие, но я не думаю, что вам здесь это нужно.
Добавление
Предполагая, что '=' не является символомкоторые будут встречаться в ваших строках очень часто, вы, конечно, можете использовать strchr()
, чтобы найти каждое вхождение '=' в строке, а затем проверить, является ли следующий символ '\ "'. Затем вы можете отсканировать назад, чтобы увидетьесли ключ совпадает. strchr()
очень вероятно намного быстрее, чем strncmp()
.