On 14.02.2018 22:45, Stefan Raspl wrote: > From: Stefan Raspl <stefan.raspl@xxxxxxxxxx> > > Should save us a couple of cycles. Are you sure, the wiki says otherwise? Note The compiled versions of the most recent patterns passed to re.match(), re.search() or re.compile() are cached, so programs that use only a few regular expressions at a time needn’t worry about compiling regular expressions. > > 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]) >
Attachment:
signature.asc
Description: OpenPGP digital signature