Sha256: fc5e007f5974a3f90209902e4d8ae647c4a56c51bd8ad7df74dd06d4f51b3685
Contents?: true
Size: 987 Bytes
Versions: 2
Compression:
Stored size: 987 Bytes
Contents
require 'pycall/import' include PyCall::Import require 'benchmark' pyimport :pandas, as: :pd pyimport :seaborn, as: :sns pyimport 'matplotlib.pyplot', as: :plt array = Array.new(100_000) { rand } trials = 100 results = { method: [], runtime: [] } # Array#sum trials.times do results[:method] << 'sum' results[:runtime] << Benchmark.realtime { array.sum } end # Array#inject(:+) trials.times do results[:method] << 'inject' results[:runtime] << Benchmark.realtime { array.inject(:+) } end # while def while_sum(ary) sum, i, n = 0, 0, ary.length while i < n sum += ary[i] i += 1 end sum end trials.times do results[:method] << 'while' results[:runtime] << Benchmark.realtime { while_sum(array) } end # visualization df = pd.DataFrame.(PyCall::Dict.new(results)) sns.barplot.(x: 'method', y: 'runtime', data: df) plt.title.("Array summation benchmark (#{trials} trials)") plt.xlabel.('Summation method') plt.ylabel.('Average runtime [sec]') plt.show.()
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pycall-0.1.0.alpha.20170224b | examples/sum_benchmarking.rb |
pycall-0.1.0.alpha.20170224 | examples/sum_benchmarking.rb |