mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	bpo-46072: Document --enable-stats option. (GH-30139)
This commit is contained in:
		
							parent
							
								
									62a8a0c522
								
							
						
					
					
						commit
						4506bbede1
					
				
					 2 changed files with 11 additions and 0 deletions
				
			
		
							
								
								
									
										53
									
								
								Tools/scripts/summarize_stats.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								Tools/scripts/summarize_stats.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,53 @@ | |||
| """Print a summary of specialization stats for all files in the | ||||
| default stats folders. | ||||
| """ | ||||
| 
 | ||||
| import collections | ||||
| import os.path | ||||
| 
 | ||||
| if os.name == "nt": | ||||
|     DEFAULT_DIR = "c:\\temp\\py_stats\\" | ||||
| else: | ||||
|     DEFAULT_DIR = "/tmp/py_stats/" | ||||
| 
 | ||||
| 
 | ||||
| TOTAL = "deferred", "hit", "miss", "unquickened" | ||||
| 
 | ||||
| def print_stats(name, family_stats): | ||||
|     total = sum(family_stats[kind] for kind in TOTAL) | ||||
|     if total == 0: | ||||
|         return | ||||
|     print(name+":") | ||||
|     for key in sorted(family_stats): | ||||
|         if not key.startswith("specialization"): | ||||
|             print(f"{key:>12}:{family_stats[key]:>12} {100*family_stats[key]/total:0.1f}%") | ||||
|     for key in ("specialization_success",  "specialization_failure"): | ||||
|         print(f"  {key}:{family_stats[key]:>12}") | ||||
|     total_failures = family_stats["specialization_failure"] | ||||
|     failure_kinds = [ 0 ] * 30 | ||||
|     for key in family_stats: | ||||
|         if not key.startswith("specialization_failure_kind"): | ||||
|             continue | ||||
|         _, index = key[:-1].split("[") | ||||
|         index =  int(index) | ||||
|         failure_kinds[index] = family_stats[key] | ||||
|     for index, value in enumerate(failure_kinds): | ||||
|         if not value: | ||||
|             continue | ||||
|         print(f"    kind {index:>2}: {value:>8} {100*value/total_failures:0.1f}%") | ||||
| 
 | ||||
| def main(): | ||||
|     stats = collections.defaultdict(collections.Counter) | ||||
|     for filename in os.listdir(DEFAULT_DIR): | ||||
|         for line in open(os.path.join(DEFAULT_DIR, filename)): | ||||
|             key, value = line.split(":") | ||||
|             key = key.strip() | ||||
|             family, stat = key.split(".") | ||||
|             value = int(value.strip()) | ||||
|             stats[family][stat] += value | ||||
| 
 | ||||
|     for name in sorted(stats): | ||||
|         print_stats(name, stats[name]) | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
|     main() | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Mark Shannon
						Mark Shannon