Skip to content

RegexpTesting

kouki-o-iij edited this page Mar 22, 2013 · 16 revisions

メモリ周りのテスト

何を確認したいの?

  • iij/mruby iij と比較してデグレードが発生しないこと
    • メモリリークをしていないこと
    • 大量のオブジェクト生成時、大量のテキストマッチング時に異常が発生しないこと
    • ここらへんも加味すること https://github.com/iij/mruby/issues/77

オブジェクトを単体で作って、マッチさせて GC に回収させる

count before after
3000 2552kb 1368kb
5000 2552kb 1364kb
10000 2552kb 1364kb
15000 2552kb 1368kb
20000 2552kb 1368kb
50000 2552kb 1368kb
100000 2552kb 1368kb

大量のオブジェクトを生成して GC で回収させるケース

count before after
3000 2556kb 1420kb
5000 2556kb 1424kb
10000 2556kb 1420kb
15000 2556kb 1424kb
20000 2556kb 1420kb
50000 2556kb 1420kb
100000 2556kb 1420kb

それなりのサイズのテキストを用意して、1/2 くらいマッチするケース

count before after
3000 2640kb 1476kb
5000 2640kb 1480kb
10000 2640kb 1480kb
15000 2640kb 1476kb
20000 2640kb 1480kb
50000 2640kb 1480kb
100000 2640kb 1476kb

ベンチマーク

コマンド

/usr/bin/time -f "%M kb" ../mruby-iij/bin/mruby bench_regex.rb

ソースコード

test = 0
t1 = Time.now
100.times {
  10000.times {
    test += 1
    re = Regexp.new(test.to_s)
    e = re.match(test.to_s)
  }
  GC.start
}
puts "Regexp #{Time.now - t1} sec"

結果

repo time memory
iij/mruby 45.655449 sec 3164 kb
mruby-support-regexp 10.551873 sec 1760 kb
ruby1.9.3 3.325488378 sec 6160 kb

速度面でのテスト

Clone this wiki locally