On Sun, Apr 16, 2017 at 3:55 AM, bartc <b...@freeuk.com> wrote: > Example C of the same silly program in Python: > > def add(a,b): > return a+b > > def testfn(): > sum=a=b=0 > for i in range(100000000): > sum += add(a,b) > a += 1 > b += 2 > > print (a,b,sum) > > testfn() > > > Timings: > > A (Pure HLL**) 13 seconds (dynamic/interpreted) > A (With ASM module) 3 > A (With ASM module) 2 (older version; hmmm...) > > B (my compiler) 0.5 (static/compiled) > B (via C/gcc-O3) 0.14 > > C (Python 2) 163 > C (Python 2/xrange) 30 > C (Python 3) 38 > C (Pypy) 5 >
Just for fun I wanted to write this up in Nim to compare execution time. Nim has Python-esqe syntax but is statically typed and compiled. I think this is relevant to the discussion. Code looks like this: ``` import times proc add(a, b: int): int = result = a + b proc test() = var sum = 0 a = 0 b = 0 for i in 0..<100000000: sum += add(a, b) a += 1 b += 1 echo "a: " & $a & " b: " & $b & "\n" echo "Sum: " & $sum when isMainModule: var t0 = cpuTime() test() var t1 = cpuTime() echo "***Execution Time: " & $(t1 - t0) & "***\n" ``` No optimization: ***Execution Time: 2.876923*** Optimized for speed: ***Execution Time: 2.844163*** Optimized for size: ***Execution Time: 2.844901*** Release option: ***Execution Time: 2.844021*** So, generally around 2.8 seconds. Not too bad for a GC'd language. There are probably some more optimizations I could make to improve execution time. -- https://mail.python.org/mailman/listinfo/python-list