diff options
Diffstat (limited to 'examples/summaries/cocoa/metrics.py')
| -rw-r--r-- | examples/summaries/cocoa/metrics.py | 168 | 
1 files changed, 93 insertions, 75 deletions
| diff --git a/examples/summaries/cocoa/metrics.py b/examples/summaries/cocoa/metrics.py index 6b82ff3b3015..6a73a7344b95 100644 --- a/examples/summaries/cocoa/metrics.py +++ b/examples/summaries/cocoa/metrics.py @@ -6,89 +6,107 @@ This file is distributed under the University of Illinois Open Source  License. See LICENSE.TXT for details.  """  import lldb -import time, datetime +import time +import datetime  import inspect +  class TimeMetrics: -	@staticmethod -	def generate(label=None): -		return TimeMetrics(label) -	 -	def __init__(self,lbl=None): -		self.label = "" if lbl is None else lbl -		pass -	 -	def __enter__(self): -		caller = inspect.stack()[1] -		self.function = str(caller) -		self.enter_time = time.clock() -	 -	def __exit__(self, a,b,c): -		self.exit_time = time.clock() -		print("It took " + str(self.exit_time - self.enter_time) + " time units to run through " + self.function + self.label) -		return False + +    @staticmethod +    def generate(label=None): +        return TimeMetrics(label) + +    def __init__(self, lbl=None): +        self.label = "" if lbl is None else lbl +        pass + +    def __enter__(self): +        caller = inspect.stack()[1] +        self.function = str(caller) +        self.enter_time = time.clock() + +    def __exit__(self, a, b, c): +        self.exit_time = time.clock() +        print("It took " + str(self.exit_time - self.enter_time) + +              " time units to run through " + self.function + self.label) +        return False +  class Counter: -	def __init__(self): -		self.count = 0 -		self.list = [] -	def update(self,name): -		self.count = self.count + 1 -		# avoid getting the full dump of this ValueObject just to save its metrics -		if isinstance(name,lldb.SBValue): -			self.list.append(name.GetName()) -		else: -			self.list.append(str(name)) -	def __str__(self): -		return str(self.count) + " times, for items [" + str(self.list) + "]" + +    def __init__(self): +        self.count = 0 +        self.list = [] + +    def update(self, name): +        self.count = self.count + 1 +        # avoid getting the full dump of this ValueObject just to save its +        # metrics +        if isinstance(name, lldb.SBValue): +            self.list.append(name.GetName()) +        else: +            self.list.append(str(name)) + +    def __str__(self): +        return str(self.count) + " times, for items [" + str(self.list) + "]" +  class MetricsPrinter_Verbose: -	def __init__(self,metrics): -		self.metrics = metrics -	def __str__(self): -		string = "" -		for key,value in self.metrics.metrics.items(): -			string = string + "metric " + str(key) + ": " + str(value) + "\n" -		return string + +    def __init__(self, metrics): +        self.metrics = metrics + +    def __str__(self): +        string = "" +        for key, value in self.metrics.metrics.items(): +            string = string + "metric " + str(key) + ": " + str(value) + "\n" +        return string +  class MetricsPrinter_Compact: -	def __init__(self,metrics): -		self.metrics = metrics -	def __str__(self): -		string = "" -		for key,value in self.metrics.metrics.items(): -			string = string + "metric " + str(key) + " was hit " + str(value.count) + " times\n" -		return string + +    def __init__(self, metrics): +        self.metrics = metrics + +    def __str__(self): +        string = "" +        for key, value in self.metrics.metrics.items(): +            string = string + "metric " + \ +                str(key) + " was hit " + str(value.count) + " times\n" +        return string +  class Metrics: -	def __init__(self): -		self.metrics = {} - -	def add_metric(self,name): -		self.metrics[name] = Counter() - -	def metric_hit(self,metric,trigger): -		self.metrics[metric].update(trigger) - -	def __getitem__(self,key): -		return self.metrics[key] - -	def __getattr__(self,name): -		if name == 'compact': -			return MetricsPrinter_Compact(self) -		if name == 'verbose': -			return MetricsPrinter_Verbose(self) -		raise AttributeError("%r object has no attribute %r" % -			                         (type(self).__name__, name)) - -	def __str__(self): -		return str(self.verbose) - -	def metric_success(self,metric): -		total_count = 0 -		metric_count = self[metric].count -		for key,value in self.metrics.items(): -			total_count = total_count + value.count -		if total_count > 0: -			return metric_count / float(total_count) -		return 0 + +    def __init__(self): +        self.metrics = {} + +    def add_metric(self, name): +        self.metrics[name] = Counter() + +    def metric_hit(self, metric, trigger): +        self.metrics[metric].update(trigger) + +    def __getitem__(self, key): +        return self.metrics[key] + +    def __getattr__(self, name): +        if name == 'compact': +            return MetricsPrinter_Compact(self) +        if name == 'verbose': +            return MetricsPrinter_Verbose(self) +        raise AttributeError("%r object has no attribute %r" % +                             (type(self).__name__, name)) + +    def __str__(self): +        return str(self.verbose) + +    def metric_success(self, metric): +        total_count = 0 +        metric_count = self[metric].count +        for key, value in self.metrics.items(): +            total_count = total_count + value.count +        if total_count > 0: +            return metric_count / float(total_count) +        return 0 | 
