Un altro benchmark che mette a confronto alcune recenti versioni di ruby con gli ultimi rilasci di python. Due semplici script per confrontare sintassi e prestazioni di questi moderni linguaggi.
Il sistema su cui ho eseguito la prova è un portatile Dell Inspiron 9400 con Centrino Duo, Intel T7200 4Mb Cache 2Ghz, Ram 2Gb 667Mhz. Sistema operativo Windows XP pro SP3.
Questo è il risultato del primo test, usato come riscaldamento per le vm:
| Versione | Compilatore | Secondi |
|---|---|---|
| Python 2.6.4 | 7,5 | |
| Ruby 1.9.1 p129 | i386-mingw32 | 8,2 |
| JRuby 1.4.0 | Client VM 1.6.0_15 [x86-java] | 9,0 |
| Python 3.1.1 | 9,1 | |
| Ruby 1.9.1 p243 | i386-mingw32 | 9,6 |
| IronRuby 0.9.3.0 | .NET 2.0.0.0 | 20,3 |
| Ruby 1.9.1 p376 | i386-mswin32 | 20,9 |
| Ruby 1.8.6 p368 | i386-mingw32 | 22,9 |
| IronPython 2.6 | .NET 2.0.0.0 | 225,4 |
| Jython 2.5.1 | Client VM 1.6.0_15 [x86-java] | Timeout |
Il risultato che segue invece, si riferisce alla media delle tre rilevazioni successive al riscaldamento. Le prestazioni di JRuby migliorano del 23%:
| Versione | Compilatore | Secondi |
|---|---|---|
| JRuby 1.4.0 | Client VM 1.6.0_15 [x86-java] | 6,9 |
| Python 2.6.4 | 7,5 | |
| Ruby 1.9.1 p129 | i386-mingw32 | 8,2 |
| Python 3.1.1 | 9,0 | |
| Ruby 1.9.1 p243 | i386-mingw32 | 10,0 |
| IronRuby 0.9.3.0 | .NET 2.0.0.0 | 18,9 |
| Ruby 1.9.1 p376 | i386-mswin32 | 20,6 |
| Ruby 1.8.6 p368 | i386-mingw32 | 23,2 |
| IronPython 2.6 | .NET 2.0.0.0 | 256,5 |
| Jython 2.5.1 | Client VM 1.6.0_15 [x86-java] | Timeout |
Ed ecco gli script. Ho cercato di ottimizzare le rispettive versioni e per fare ciò, ho dovuto creare due varianti per ogni linguaggio.
Ruby 1.8.6:
def strings_test(ntest) r1 = r2 = r3 = 0 xstr = "" ntest.times do #Create a string, add 'abcde1234_' until getting a str size 1000 xstr = 'abcde1234_' * 10000 #Make letters upcase xstr.upcase! #Change '1234_' with '67890 ' (space at last position) #Now the repeated string should be 'ABCDE67890 ' xstr.gsub! '1234_', '67890 ' #Cast numbers from 29 upto size/2 to string and add it to xstr variable, ciclying for every number (not add all numbers one time) 29.upto(xstr.size/2) {|n| xstr << n.to_s} #Check 1: Count 'A' char #Check 2: Count '9' char 0.upto(xstr.size-1) do |n| if xstr[n].chr() == 'A' r1+=1 elsif xstr[n].chr() == '9' r2+=1 end end #Create an array from xstr using space to split r3 += xstr.split.size end return r1, r2, r3, xstr end def arrays_test(ntest, xstr) r1 = r2 = r3 = r4 = r5 = 0 ntest.times do #Clear ar then add 5000 times this element: "I", "am", "great", null, "or", "number", 1 ar = [] 5000.times do ['I', 'am', 'great', nil, 'or', 'number', 1].each {|a| ar << a} end #...then reverse elements to obtain this order: 1, "number", "or", null, "great", "am", "I" ar.reverse! #...then, count the element with value "great" using two separate cicle #the first starting from 31 until 2955 (bounty inclused) 31.upto(2955) do |n| r1 += 1 if ar[n] == 'great' end #the second looping all the array elements ar.each {|n| r2+=1 if n == 'great'} #Loop inside and build a temporary string with index and value, without put it into a variable and only for elements <> null ar.each_index{|i| ar[i] ? "#{i} #{ar[i]}" : r3+=1 } #delete null value elements and take its size ar.compact! r4 += ar.size #then join elements with space and take its size r5 += ar.join(' ').size end return r1, r2, r3, r4, r5 end def nums_test(ntest) r1 = r2 = 0 ntest.times do #Find all prime numbers from 8 to 95 step by 3 and sum all primes got, to check the result #51.upto(307) do |n| (8..95).step(3) do |n| primes(n).each {|a| r1 += a} end #Calculate factorial numbers start from 2 to 42 r2 = 0 for n in 2..42 r2 += fac(n) end end return r1, r2 end #Primes must return an array of prime numbers def primes(n) ar = [] for x in (2..n) prime = true for y in (2..x-1) if x%y == 0 prime = false break end end ar << x if prime end return ar end def fac(n) (1..n).inject{|total, current| total * current} end # --- START --- puts "\nWarming up..." t1=t2=t3=0 time = Time.now r1, r2, r3, xstr = strings_test(5) puts "Strings test - Elapsed %.3f" % (p1=Time.now - time) puts "Check1: #{r1}" puts "Check2: #{r2}" puts "Check3: #{r3}" puts "Check4: #{xstr.size}" time = Time.now r1, r2, r3, r4, r5 = arrays_test(50, xstr) puts "Arrays test - Elapsed %.3f" % (p2=Time.now - time) puts "Check1: #{r1}" puts "Check2: #{r2}" puts "Check3: #{r3}" puts "Check4: #{r4}" puts "Check5: #{r5}" time = Time.now r1, r2 = nums_test(500) puts "Numeric test - Elapsed %.3f" % (p3=Time.now - time) puts "Check1: #{r1}" puts "Check2: #{r2}" puts "Ruby Partial elapsed time %.3f" % (p1+p2+p3) puts "\n1. Starting Ruby tests..." time = Time.now r1, r2, r3, xstr = strings_test(5) puts "Strings test - Elapsed %.3f" % (p1=Time.now - time) time = Time.now r1, r2, r3, r4, r5 = arrays_test(50, xstr) puts "Arrays test - Elapsed %.3f" % (p2=Time.now - time) time = Time.now r1, r2 = nums_test(500) puts "Numeric test - Elapsed %.3f" % (p3=Time.now - time) puts "Ruby Partial elapsed time %.3f" % (p1+p2+p3) t1+=p1;t2+=p2;t3+=p3 puts "\n2. Starting Ruby tests..." time = Time.now r1, r2, r3, xstr = strings_test(5) puts "Strings test - Elapsed %.3f" % (p1=Time.now - time) time = Time.now r1, r2, r3, r4, r5 = arrays_test(50, xstr) puts "Arrays test - Elapsed %.3f" % (p2=Time.now - time) time = Time.now r1, r2 = nums_test(500) puts "Numeric test - Elapsed %.3f" % (p3=Time.now - time) puts "Ruby Partial elapsed time %.3f" % (p1+p2+p3) t1+=p1;t2+=p2;t3+=p3 puts "\n3. Starting Ruby tests..." time = Time.now r1, r2, r3, xstr = strings_test(5) puts "Strings test - Elapsed %.3f" % (p1=Time.now - time) time = Time.now r1, r2, r3, r4, r5 = arrays_test(50, xstr) puts "Arrays test - Elapsed %.3f" % (p2=Time.now - time) time = Time.now r1, r2 = nums_test(500) puts "Numeric test - Elapsed %.3f" % (p3=Time.now - time) puts "Ruby Partial elapsed time %.3f" % (p1+p2+p3) t1+=p1;t2+=p2;t3+=p3 puts "-------------------------------------" puts "Average Strings test - Elapsed %.3f" % (t1/3) puts "Average Arrays test - Elapsed %.3f" % (t2/3) puts "Average Numeric test - Elapsed %.3f" % (t3/3) puts "\nRuby Average elapsed time %.3f" % (t1/3+t2/3+t3/3)
Ruby 1.9.1:
def strings_test(ntest) r1 = r2 = r3 = 0 xstr = "" ntest.times do #Create a string, add 'abcde1234_' until getting a str size 1000 xstr = 'abcde1234_' * 10000 #Make letters upcase xstr.upcase! #Change '1234_' with '67890 ' (space at last position) #Now the repeated string should be 'ABCDE67890 ' xstr.gsub! '1234_', '67890 ' #Cast numbers to string, from 29 up to size/2. Add it to xstr variable as well, ciclying for every number (not adding all numbers once) 29.upto(xstr.size/2) {|n| xstr << n.to_s} #Check 1: Count 'A' char #Check 2: Count '9' char 0.upto(xstr.size-1) do |n| if xstr[n] == 'A' r1+=1 elsif xstr[n] == '9' r2+=1 end end #Create an array from xstr using space to split, its size is the third check r3 += xstr.split.size end return r1, r2, r3, xstr end def arrays_test(ntest, xstr) r1 = r2 = r3 = r4 = r5 = 0 ntest.times do #Clear ar then add 5000 times this element: "I", "am", "great", null, "or", "number", 1 ar = [] 5000.times do ['I', 'am', 'great', nil, 'or', 'number', 1].each {|a| ar << a} end #...then reverse elements to obtain this order: 1, "number", "or", null, "great", "am", "I" ar.reverse! #...then, count the element with value "great" using two separate cicle #the first starting from 31 until 2955 (bounty inclused) 31.upto(2955) do |n| r1 += 1 if ar[n] == 'great' end #the second looping all the array elements ar.each {|n| r2+=1 if n == 'great'} #Loop inside and build a temporary string with index and value, without put it into a variable and only for elements <> null ar.each_index{|i| ar[i] ? "#{i} #{ar[i]}" : r3+=1 } #delete null value elements and take its size ar.compact! r4 += ar.size #then join elements with space and take its size r5 += ar.join(' ').size end return r1, r2, r3, r4, r5 end def nums_test(ntest) r1 = r2 = 0 ntest.times do #Find all prime numbers from 8 to 95 step by 3 (bounds included) and sum all primes got, to check the result #51.upto(307) do |n| (8..95).step(3) do |n| primes(n).each {|a| r1 += a} end #Calculate factorial numbers start from 2 to 42 r2 = 0 for n in 2..42 r2 += fac(n) end end return r1, r2 end #Primes must return an array of prime numbers def primes(n) ar = [] for x in (2..n) prime = true for y in (2..x-1) if x%y == 0 prime = false break end end ar << x if prime end return ar end def fac(n) (1..n).inject{|total, current| total * current} end # --- START --- puts "\nWarming up..." t1=t2=t3=0 time = Time.now r1, r2, r3, xstr = strings_test(5) puts "Strings test - Elapsed %.3f" % (p1=Time.now - time) puts "Check1: #{r1}" puts "Check2: #{r2}" puts "Check3: #{r3}" puts "Check4: #{xstr.size}" time = Time.now r1, r2, r3, r4, r5 = arrays_test(50, xstr) puts "Arrays test - Elapsed %.3f" % (p2=Time.now - time) puts "Check1: #{r1}" puts "Check2: #{r2}" puts "Check3: #{r3}" puts "Check4: #{r4}" puts "Check5: #{r5}" time = Time.now r1, r2 = nums_test(500) puts "Numeric test - Elapsed %.3f" % (p3=Time.now - time) puts "Check1: #{r1}" puts "Check2: #{r2}" puts "Ruby Partial elapsed time %.3f" % (p1+p2+p3) puts "\n1. Starting Ruby tests..." time = Time.now r1, r2, r3, xstr = strings_test(5) puts "Strings test - Elapsed %.3f" % (p1=Time.now - time) time = Time.now r1, r2, r3, r4, r5 = arrays_test(50, xstr) puts "Arrays test - Elapsed %.3f" % (p2=Time.now - time) time = Time.now r1, r2 = nums_test(500) puts "Numeric test - Elapsed %.3f" % (p3=Time.now - time) puts "Ruby Partial elapsed time %.3f" % (p1+p2+p3) t1+=p1;t2+=p2;t3+=p3 puts "\n2. Starting Ruby tests..." time = Time.now r1, r2, r3, xstr = strings_test(5) puts "Strings test - Elapsed %.3f" % (p1=Time.now - time) time = Time.now r1, r2, r3, r4, r5 = arrays_test(50, xstr) puts "Arrays test - Elapsed %.3f" % (p2=Time.now - time) time = Time.now r1, r2 = nums_test(500) puts "Numeric test - Elapsed %.3f" % (p3=Time.now - time) puts "Ruby Partial elapsed time %.3f" % (p1+p2+p3) t1+=p1;t2+=p2;t3+=p3 puts "\n3. Starting Ruby tests..." time = Time.now r1, r2, r3, xstr = strings_test(5) puts "Strings test - Elapsed %.3f" % (p1=Time.now - time) time = Time.now r1, r2, r3, r4, r5 = arrays_test(50, xstr) puts "Arrays test - Elapsed %.3f" % (p2=Time.now - time) time = Time.now r1, r2 = nums_test(500) puts "Numeric test - Elapsed %.3f" % (p3=Time.now - time) puts "Ruby Partial elapsed time %.3f" % (p1+p2+p3) t1+=p1;t2+=p2;t3+=p3 puts "-------------------------------------" puts "Average Strings test - Elapsed %.3f" % (t1/3) puts "Average Arrays test - Elapsed %.3f" % (t2/3) puts "Average Numeric test - Elapsed %.3f" % (t3/3) puts "\nRuby Average elapsed time %.3f" % (t1/3+t2/3+t3/3)
Python 2.6:
from time import time #import psyco #psyco.full() #psyco.full(memory=100) #psyco.profile(0.05, memory=100) #psyco.profile(0.2) def strings_test(ntest): r1 = r2 = r3 = 0 xstr = "" for x in xrange(ntest): #Create a string, add 'abcde1234_' until getting a xstr size 1000 xstr = 'abcde1234_' * 10000 #Make letters upcase xstr = xstr.upper() #Change '1234_' with '67890 ' (space at last position) #Now the repeated string should be 'ABCDE67890 ' xstr = xstr.replace('1234_', '67890 ') #Cast numbers to string, from 29 up to size/2. Add it to xstr variable as well, ciclying for every number (not adding all numbers once) for y in xrange(29,int(len(xstr)/2) + 1): xstr += "%s" %y #Result 1: Count 'A' char #Result 2: Count '9' char for y in xrange(0, len(xstr)): if xstr[y] == 'A': r1+=1 elif xstr[y] == '9': r2+=1 #Create an array from xstr using space to split r3 += len(xstr.split()) return r1, r2, r3, xstr #Slower than other version def multiremove(ar, what): i = 0 for el in ar: if el == what: del ar[i] i+=1 #Ugly but a bit faster def multiremove2(ar, what): todel = [] for y in xrange(0,len(ar)): if ar[y] == what: todel.append(y) todel.reverse() for y in todel: ar.pop(y) def arrays_test(ntest, xstr): r1 = r2 = r3 = r4 = r5 = 0 for x in xrange(ntest): #Clear ar then add 5000 times this element: "I", "am", "great", null, "or", "number", 1 ar = [] for y in xrange(0, 5000): ar.extend(["I", "am", "great", None, "or", "number", 1]) #...then reverse elements to obtain this order: 1, "number", "or", null, "great", "am", "I" ar.reverse() #...then, count the element with value "great" using two separate cicle #the first starting from 31 until 2955 (bounty included) for y in xrange(31,2955): if ar[y] == "great": r1 +=1 #the second looping all the array elements for y in xrange(0, len(ar)): if ar[y] == "great": r2+=1 #Loop inside and build a temporary string with index and value, without put it into a variable and only for elements <> null for y in xrange(0, len(ar)): if ar[y]: "%s %s" %(y, ar[y]) else: r3+=1 #delete null value elements and take its size multiremove2(ar, None) r4 += len(ar) #then join elements with space and take its size r5 += len(" ".join(str(n) for n in ar)) return r1, r2, r3, r4, r5 def nums_test(ntest): r1 = r2 = 0 for x in xrange(ntest): #Find all prime numbers from 8 to 95 step by 3 (bounds included) and sum all primes got, to check the result for n in xrange(8, 96, 3): for prime in primes(n): r1 += prime fac = lambda n:[1,0][n>0] or fac(n-1)*n #Calculate factorial numbers start from 2 to 42 (bounds included) r2 = 0 for n in xrange(2, 43): r2 += fac(n) return r1, r2 #Primes must return an array of prime numbers def primes(n): ar = [] for x in xrange(2, n+1): prime = True for y in xrange(2, x): if x%y == 0: prime = False break if prime: ar.append(x) return ar # --- START --- print "\nWarming up..." t1=t2=t3=0 stime = time() r1, r2, r3, xstr = strings_test(5) p1=time() - stime print "Strings test - Elapsed %.3f" % (p1) print "Check1: %s" %r1 print "Check2: %s" %r2 print "Check3: %s" %r3 print "Check4: %d" %(len(xstr)) stime = time() r1, r2, r3, r4, r5 = arrays_test(50, xstr) p2=time() - stime print "Arrays test - Elapsed %.3f" % (p2) print "Check1: %s" %r1 print "Check2: %s" %r2 print "Check3: %s" %r3 print "Check4: %s" %r4 print "Check5: %s" %r5 stime = time() r1, r2 = nums_test(500) p3=time() - stime print "Numeric test - Elapsed %.3f" % (p3) print "Check1: %s" %r1 print "Check2: %s" %r2 print "Python Partial elapsed time %.3f" % (p1+p2+p3) print "\n1. Starting Python tests..." stime = time() r1, r2, r3, xstr = strings_test(5) p1=time() - stime print "Strings test - Elapsed %.3f" % (p1) stime = time() r1, r2, r3, r4, r5 = arrays_test(50, xstr) p2=time() - stime print "Arrays test - Elapsed %.3f" % (p2) stime = time() r1, r2 = nums_test(500) p3=time() - stime print "Numeric test - Elapsed %.3f" % (p3) print "Python Partial elapsed time %.3f" % (p1+p2+p3) t1+=p1;t2+=p2;t3+=p3 print "\n2. Starting Python tests..." stime = time() r1, r2, r3, xstr = strings_test(5) p1=time() - stime print "Strings test - Elapsed %.3f" % (p1) stime = time() r1, r2, r3, r4, r5 = arrays_test(50, xstr) p2=time() - stime print "Arrays test - Elapsed %.3f" % (p2) stime = time() r1, r2 = nums_test(500) p3=time() - stime print "Numeric test - Elapsed %.3f" % (p3) print "Python Partial elapsed time %.3f" % (p1+p2+p3) t1+=p1;t2+=p2;t3+=p3 print "\n3. Starting Python tests..." stime = time() r1, r2, r3, xstr = strings_test(5) p1=time() - stime print "Strings test - Elapsed %.3f" % (p1) stime = time() r1, r2, r3, r4, r5 = arrays_test(50, xstr) p2=time() - stime print "Arrays test - Elapsed %.3f" % (p2) stime = time() r1, r2 = nums_test(500) p3=time() - stime print "Numeric test - Elapsed %.3f" % (p3) print "Python Partial elapsed time %.3f" % (p1+p2+p3) t1+=p1;t2+=p2;t3+=p3 print "-------------------------------------" print "Average Strings test - Elapsed %.3f" % (t1/3) print "Average Arrays test - Elapsed %.3f" % (t2/3) print "Average Numeric test - Elapsed %.3f" % (t3/3) print "Python Average elapsed time %.3f" % (t1/3+t2/3+t3/3)
Python 3.1:
from time import time #import psyco #psyco.full() #psyco.full(memory=100) #psyco.profile(0.05, memory=100) #psyco.profile(0.2) def strings_test(ntest): r1 = r2 = r3 = 0 xstr = "" for x in range(ntest): #Create a string, add 'abcde1234_' until getting a xstr size 1000 xstr = 'abcde1234_' * 10000 #Make letters upcase xstr = xstr.upper() #Change '1234_' with '67890 ' (space at last position) #Now the repeated string should be 'ABCDE67890 ' xstr = xstr.replace('1234_', '67890 ') #Cast numbers from 29 upto 1028 to string and add it to xstr variable, ciclying for every number (not add all numbers one time) for y in range(29,int(len(xstr)/2) + 1): xstr += "%s" %y #Result 1: Count 'A' char #Result 2: Count '9' char for y in range(0, len(xstr)): if xstr[y] == 'A': r1+=1 elif xstr[y] == '9': r2+=1 #Create an array from xstr using space to split r3 += len(xstr.split()) return r1, r2, r3, xstr #Slower than other version def multiremove(ar, what): i = 0 for el in ar: if el == what: del ar[i] i+=1 #Ugly but a bit faster def multiremove2(ar, what): todel = [] for y in range(0,len(ar)): if ar[y] == what: todel.append(y) todel.reverse() for y in todel: ar.pop(y) def arrays_test(ntest, xstr): r1 = r2 = r3 = r4 = r5 = 0 for x in range(ntest): #Clear ar then add 5000 times this element: "I", "am", "great", null, "or", "number", 1 ar = [] for y in range(0, 5000): ar.extend(["I", "am", "great", None, "or", "number", 1]) #...then reverse elements to obtain this order: 1, "number", "or", null, "great", "am", "I" ar.reverse() #...then, count the element with value "great" using two separate cicle #the first starting from 31 until 2955 (bounty included) for y in range(31,2955): if ar[y] == "great": r1 +=1 #the second looping all the array elements for y in range(0, len(ar)): if ar[y] == "great": r2+=1 #Loop inside and build a temporary string with index and value, without put it into a variable and only for elements <> null for y in range(0, len(ar)): if ar[y]: "%s %s" %(y, ar[y]) else: r3+=1 #delete null value elements and take its size multiremove2(ar, None) r4 += len(ar) #then join elements with space and take its size r5 += len(" ".join(str(n) for n in ar)) return r1, r2, r3, r4, r5 def nums_test(ntest): r1 = r2 = 0 for x in range(ntest): #Find all prime numbers from 8 to 95 step by 3 (bounds included) and sum all primes got, to check the result for n in range(8, 96, 3): for prime in primes(n): r1 += prime fac = lambda n:[1,0][n>0] or fac(n-1)*n #Calculate factorial numbers start from 2 to 42 (bounds included) r2 = 0 for n in range(2, 43): r2 += fac(n) return r1, r2 #Primes must return an array of prime numbers def primes(n): ar = [] for x in range(2, n+1): prime = True for y in range(2, x): if x%y == 0: prime = False break if prime: ar.append(x) return ar # --- START --- print("\nWarming up...") t1=t2=t3=0 stime = time() r1, r2, r3, xstr = strings_test(5) p1=time() - stime print("Strings test - Elapsed %.3f" % p1) print("Check1: %s" % r1) print("Check2: %s" % r2) print("Check3: %s" % r3) print("Check4: %d" % len(xstr)) stime = time() r1, r2, r3, r4, r5 = arrays_test(50, xstr) p2=time() - stime print("Arrays test - Elapsed %.3f" % p2) print("Check1: %s" % r1) print("Check2: %s" % r2) print("Check3: %s" % r3) print("Check4: %s" % r4) print("Check5: %s" % r5) stime = time() r1, r2 = nums_test(500) p3=time() - stime print("Numeric test - Elapsed %.3f" % p3) print("Check1: %s" % r1) print("Check2: %s" % r2) print( "Python Partial elapsed time %.3f" % (p1+p2+p3)) print("\n1. Starting Python tests...") stime = time() r1, r2, r3, xstr = strings_test(5) p1=time() - stime print("Strings test - Elapsed %.3f" % p1) stime = time() r1, r2, r3, r4, r5 = arrays_test(50, xstr) p2=time() - stime print( "Arrays test - Elapsed %.3f" % p2) stime = time() r1, r2 = nums_test(500) p3=time() - stime print("Numeric test - Elapsed %.3f" % p3) print( "Python Partial elapsed time %.3f" % (p1+p2+p3)) t1+=p1;t2+=p2;t3+=p3 print("\n2. Starting Python tests...") stime = time() r1, r2, r3, xstr = strings_test(5) p1=time() - stime print("Strings test - Elapsed %.3f" % p1) stime = time() r1, r2, r3, r4, r5 = arrays_test(50, xstr) p2=time() - stime print( "Arrays test - Elapsed %.3f" % p2) stime = time() r1, r2 = nums_test(500) p3=time() - stime print("Numeric test - Elapsed %.3f" % p3) print( "Python Partial elapsed time %.3f" % (p1+p2+p3)) t1+=p1;t2+=p2;t3+=p3 print("\n3. Starting Python tests...") stime = time() r1, r2, r3, xstr = strings_test(5) p1=time() - stime print("Strings test - Elapsed %.3f" % p1) stime = time() r1, r2, r3, r4, r5 = arrays_test(50, xstr) p2=time() - stime print( "Arrays test - Elapsed %.3f" % p2) stime = time() r1, r2 = nums_test(500) p3=time() - stime print("Numeric test - Elapsed %.3f" % p3) print( "Python Partial elapsed time %.3f" % (p1+p2+p3)) t1+=p1;t2+=p2;t3+=p3 print("-------------------------------------") print("Average Strings test - Elapsed %.3f" % (t1/3)) print("Average Arrays test - Elapsed %.3f" % (t2/3)) print("Average Numeric test - Elapsed %.3f" % (t3/3)) print("Python Average elapsed time %.3f" % (t1/3+t2/3+t3/3))
Italiano
English