mirror of
				https://github.com/pocketpy/pocketpy
				synced 2025-10-31 08:50:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			158 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| icon: zap
 | |
| order: -10
 | |
| label: Performance
 | |
| ---
 | |
| 
 | |
| # Performance
 | |
| 
 | |
| Currently, pkpy is as fast as cpython 3.9.
 | |
| Performance results for cpython 3.9 are applicable to for pkpy.
 | |
| 
 | |
| Here is a benchmark result of `v1.2.6`.
 | |
| Files are located in `benchmarks/`.
 | |
| 
 | |
| ## win32 64-bit cpy39
 | |
| ```
 | |
| CPython: 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)]
 | |
| System: 64-bit
 | |
| Testing directory: benchmarks/
 | |
| > benchmarks/fib.py
 | |
|   cpython:  0.986091s (100%)
 | |
|   pocketpy: 0.985427s (99.93%)
 | |
| > benchmarks/loop_0.py
 | |
|   cpython:  0.515685s (100%)
 | |
|   pocketpy: 0.344132s (66.73%)
 | |
| > benchmarks/loop_1.py
 | |
|   cpython:  0.938407s (100%)
 | |
|   pocketpy: 0.595634s (63.47%)
 | |
| > benchmarks/loop_2.py
 | |
|   cpython:  1.188671s (100%)
 | |
|   pocketpy: 0.735259s (61.86%)
 | |
| > benchmarks/loop_3.py
 | |
|   cpython:  4.957218s (100%)
 | |
|   pocketpy: 2.314210s (46.68%)
 | |
| > benchmarks/primes.py
 | |
|   cpython:  9.146332s (100%)
 | |
|   pocketpy: 8.507227s (93.01%)
 | |
| > benchmarks/recursive.py
 | |
|   cpython:  0.044789s (100%)
 | |
|   pocketpy: 0.031252s (69.78%)
 | |
| > benchmarks/simple.py
 | |
|   cpython:  0.516624s (100%)
 | |
|   pocketpy: 0.453159s (87.72%)
 | |
| > benchmarks/sort.py
 | |
|   cpython:  0.929597s (100%)
 | |
|   pocketpy: 0.406802s (43.76%)
 | |
| > benchmarks/sum.py
 | |
|   cpython:  0.047151s (100%)
 | |
|   pocketpy: 0.031266s (66.31%)
 | |
| ALL TESTS PASSED
 | |
| ```
 | |
| 
 | |
| ## linux 64-bit cpy38
 | |
| ```
 | |
| CPython: 3.8.10 (default, May 26 2023, 14:05:08) [GCC 9.4.0]
 | |
| System: 64-bit
 | |
| Testing directory: benchmarks/
 | |
| > benchmarks/fib.py
 | |
|   cpython:  0.739547s (100%)
 | |
|   pocketpy: 0.613591s (82.97%)
 | |
| > benchmarks/loop_0.py
 | |
|   cpython:  0.356003s (100%)
 | |
|   pocketpy: 0.224396s (63.03%)
 | |
| > benchmarks/loop_1.py
 | |
|   cpython:  0.661924s (100%)
 | |
|   pocketpy: 0.446577s (67.47%)
 | |
| > benchmarks/loop_2.py
 | |
|   cpython:  0.937243s (100%)
 | |
|   pocketpy: 0.514324s (54.88%)
 | |
| > benchmarks/loop_3.py
 | |
|   cpython:  3.671752s (100%)
 | |
|   pocketpy: 1.876151s (51.10%)
 | |
| > benchmarks/primes.py
 | |
|   cpython:  7.293947s (100%)
 | |
|   pocketpy: 5.427518s (74.41%)
 | |
| > benchmarks/recursive.py
 | |
|   cpython:  0.021559s (100%)
 | |
|   pocketpy: 0.010227s (47.44%)
 | |
| > benchmarks/simple.py
 | |
|   cpython:  0.408654s (100%)
 | |
|   pocketpy: 0.265084s (64.87%)
 | |
| > benchmarks/sort.py
 | |
|   cpython:  0.372539s (100%)
 | |
|   pocketpy: 0.243566s (65.38%)
 | |
| > benchmarks/sum.py
 | |
|   cpython:  0.021242s (100%)
 | |
|   pocketpy: 0.010113s (47.61%)
 | |
| ALL TESTS PASSED
 | |
| ```
 | |
| 
 | |
| ## linux 32-bit cpy39
 | |
| ```
 | |
| CPython: 3.9.18 (main, Aug 26 2023, 11:50:23) [GCC 10.3.1 20211027]
 | |
| System: 32-bit
 | |
| Testing directory: benchmarks/
 | |
| > benchmarks/fib.py
 | |
|   cpython:  1.967908s (100%)
 | |
|   pocketpy: 0.960947s (48.83%)
 | |
| > benchmarks/loop_0.py
 | |
|   cpython:  1.063461s (100%)
 | |
|   pocketpy: 0.396626s (37.30%)
 | |
| > benchmarks/loop_1.py
 | |
|   cpython:  1.563821s (100%)
 | |
|   pocketpy: 0.639663s (40.90%)
 | |
| > benchmarks/loop_2.py
 | |
|   cpython:  2.626848s (100%)
 | |
|   pocketpy: 0.757444s (28.83%)
 | |
| > benchmarks/loop_3.py
 | |
|   cpython:  13.428345s (100%)
 | |
|   pocketpy: 2.852351s (21.24%)
 | |
| > benchmarks/primes.py
 | |
|   cpython:  18.174904s (100%)
 | |
|   pocketpy: 8.423515s (46.35%)
 | |
| > benchmarks/recursive.py
 | |
|   cpython:  0.025673s (100%)
 | |
|   pocketpy: 0.012470s (48.57%)
 | |
| > benchmarks/simple.py
 | |
|   cpython:  1.042090s (100%)
 | |
|   pocketpy: 0.480013s (46.06%)
 | |
| > benchmarks/sort.py
 | |
|   cpython:  0.989279s (100%)
 | |
|   pocketpy: 0.379171s (38.33%)
 | |
| > benchmarks/sum.py
 | |
|   cpython:  0.024227s (100%)
 | |
|   pocketpy: 0.012477s (51.50%)
 | |
| ALL TESTS PASSED
 | |
| ```
 | |
| 
 | |
| See [actions/runs](https://github.com/blueloveTH/pocketpy/actions/runs/6511071423/job/17686074263).
 | |
| 
 | |
| ## Primes benchmarks
 | |
| 
 | |
| These are the results of the primes benchmark on Intel i5-12400F, WSL (Ubuntu 20.04 LTS).
 | |
| 
 | |
| | name | version | time | file |
 | |
| | ---- | ---- | ---- | ---- |
 | |
| | c++ | gnu++11 | `0.104s ■□□□□□□□□□□□□□□□` | [benchmarks/primes.cpp](https://github.com/blueloveTH/pocketpy/blob/9481d653b60b81f4590a4d48f2be496f6962261e/benchmarks/primes.cpp) |
 | |
| | lua | 5.3.3 | `1.576s ■■■■■■■■■□□□□□□□` | [benchmarks/primes.lua](https://github.com/blueloveTH/pocketpy/blob/9481d653b60b81f4590a4d48f2be496f6962261e/benchmarks/primes.lua) |
 | |
| | pkpy | 1.2.7 | `2.385s ■■■■■■■■■■■■■□□□` | [benchmarks/primes.py](https://github.com/blueloveTH/pocketpy/blob/9481d653b60b81f4590a4d48f2be496f6962261e/benchmarks/primes.py) |
 | |
| | cpython | 3.8.10 | `2.871s ■■■■■■■■■■■■■■■■` | [benchmarks/primes.py](https://github.com/blueloveTH/pocketpy/blob/9481d653b60b81f4590a4d48f2be496f6962261e/benchmarks/primes.py) |
 | |
| 
 | |
| ```sh
 | |
| $ time lua benchmarks/primes.lua 
 | |
| 
 | |
| real    0m1.576s
 | |
| user    0m1.514s
 | |
| sys     0m0.060s
 | |
| $ time ./main benchmarks/primes.py 
 | |
| 
 | |
| real    0m2.385s
 | |
| user    0m2.247s
 | |
| sys     0m0.100s
 | |
| $ time python benchmarks/primes.py 
 | |
| 
 | |
| real    0m2.871s
 | |
| user    0m2.798s
 | |
| sys     0m0.060s
 | |
| ``` |