Ruby

Ruby 2.1-en teszteltem az alábbiakat.

http://www.sitepoint.com/guide-ruby-collections-iv-tips-tricks/

Véletlen adatokat tartalmazó tömbnél pl. az alábbi helyett:

(1..20).map{rand(100)}

ez gyorsabb:

Array.new(20){rand(100)}

[42] pry(main)> Benchmark.realtime{ 100000.times{ a = (1..20).map{rand(100)} }}
=> 0.802904685
[43] pry(main)> Benchmark.realtime{ 100000.times{ a = (1..20).map{rand(100)} }}
=> 0.807004722
[44] pry(main)> Benchmark.realtime{ 100000.times{ a = Array.new(20){rand(100)} }}
=> 0.698779995
[45] pry(main)> Benchmark.realtime{ 100000.times{ a = Array.new(20){rand(100)} }}
=> 0.691444354

~ 1.16x a különbség.

A string összefűzés nagyon nem mindegy (utóbbinál nem jön létre mindig egy új objektum):

[85] pry(main)> a = ""; Benchmark.realtime{ 10000.times{ a += rand.to_s }}
=> 0.560190021
[86] pry(main)> a = ""; Benchmark.realtime{ 10000.times{ a += rand.to_s }}
=> 0.561793155
[87] pry(main)> a = ""; Benchmark.realtime{ 10000.times{ a << rand.to_s }}
=> 0.024884379
[88] pry(main)> a = ""; Benchmark.realtime{ 10000.times{ a << rand.to_s }}
=> 0.021635365

Hozzászólások

Like.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.