From: Stefan Raspl <stefan.raspl@xxxxxxxxxx> Should save us a couple of cycles. Signed-off-by: Stefan Raspl <raspl@xxxxxxxxxxxxxxxxxx> --- tools/kvm/kvm_stat/kvm_stat | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/tools/kvm/kvm_stat/kvm_stat b/tools/kvm/kvm_stat/kvm_stat index d7c80ac0374d..9f7e21cd5d19 100755 --- a/tools/kvm/kvm_stat/kvm_stat +++ b/tools/kvm/kvm_stat/kvm_stat @@ -480,7 +480,7 @@ class Provider(object): """Indicate whether field is valid according to fields_filter.""" if not fields_filter: return True - return re.match(fields_filter, field) is not None + return fields_filter.match(field) is not None @staticmethod def walkdir(path): @@ -811,9 +811,10 @@ class Stats(object): """ def __init__(self, options): - self.providers = self._get_providers(options) self._pid_filter = options.pid self._fields_filter = options.fields + self._fields_filter_comp = re.compile(options.fields) + self.providers = self._get_providers(options) self.values = {} def _get_providers(self, options): @@ -821,10 +822,12 @@ class Stats(object): providers = [] if options.debugfs: - providers.append(DebugfsProvider(options.pid, options.fields, + providers.append(DebugfsProvider(self._pid_filter, + self._fields_filter_comp, options.dbgfs_include_past)) if options.tracepoints or not providers: - providers.append(TracepointProvider(options.pid, options.fields)) + providers.append(TracepointProvider(self._pid_filter, + self._fields_filter_comp)) return providers @@ -834,7 +837,7 @@ class Stats(object): # also clear the cache of old values. self.values = {} for provider in self.providers: - provider.update_fields(self._fields_filter) + provider.update_fields(self._fields_filter_comp) def reset(self): self.values = {} @@ -849,6 +852,7 @@ class Stats(object): def fields_filter(self, fields_filter): if fields_filter != self._fields_filter: self._fields_filter = fields_filter + self._fields_filter_comp = re.compile(fields_filter) self._update_provider_filters() @property @@ -1040,7 +1044,7 @@ class Tui(object): self.stats.fields_filter = DEFAULT_REGEX elif self.stats.fields_filter == DEFAULT_REGEX: - self.stats.fields_filter = None + self.stats.fields_filter = '' def _update_pid(self, pid): """Propagates pid selection to stats object.""" @@ -1548,7 +1552,7 @@ def main(): stats = Stats(options) if options.fields == 'help': - stats.fields_filter = None + stats.fields_filter = '' event_list = [] for key in stats.get().keys(): event_list.append(key.split('(', 1)[0]) -- 2.13.5