Dar vieno analitiko svetainė

Petras Kudaras

Optimizavau Ruby

Visgi nesinorėjo tikėti, kad Ruby toks lėtas, todėl pasiskaičiau manualą. Pirma, susitvarkiau su tuo nil. Pasirodo, užteko nurodyt reikšmę pagal nutylėjimą (hmmm… įdomu tokie bajeriai kitose kalbose iš vis yra?). Paskui ir patį kodą perrašiau truputį panašiau į Ruby kodą ;) Rezultatas aiškus: kodas sutrumpėjo iki kokių 6 eilučių (atkaklios rungtynės su Perlu ;), o kodo greitis padidėjo penkis (!) kartus. Tiesa, algoritmas šiek tiek pasikeitė. Reikės tuo pačiu algoritmu ant PHP ką nors pabandyt. O juk atrodytų skaityt iš bylos po baitą yra labai lėta…

t = "%10.5f" % Time.now.to_f
h = {}; h.default=0;
File.new($*[0]).each_byte { |char| h[char] += 1 }
h.each { |k, v| print "#{k.chr} => #{v}\n" }
print "Laikas: ", (("%10.5f" % Time.now.to_f).to_f - t.to_f).to_s

Vykdymo greitis su 1.5MB tekstine byla: 12.708 sekundės (Perlas – 13.690)