Better GC stats

This commit is contained in:
Lourens Naude 2008-10-09 02:01:57 +01:00
parent 35d2545c17
commit a9fea270f5

View File

@ -6,13 +6,36 @@ with_gc = Mysql.real_connect('localhost','root','','mysql')
without_gc = Mysql.real_connect('localhost','root','','mysql') without_gc = Mysql.real_connect('localhost','root','','mysql')
without_gc.disable_gc = true without_gc.disable_gc = true
$gc_stats = []
def countable_gc?
GC.respond_to? :count
end
def gc_counts( label, scope )
$gc_stats << "GC #{scope} ( #{label} ) #{GC.count}"
end
def with_gc_counts( label )
gc_counts( label, 'before' ) if countable_gc?
yield
gc_counts( label, 'after' ) if countable_gc?
end
n = 1000 n = 1000
Benchmark.bm do |x| Benchmark.bm do |x|
x.report( 'With GC' ) do x.report( 'With GC' ) do
n.times{ with_gc.c_async_query( 'SELECT * FROM user' ) } with_gc_counts( 'With GC' ) do
n.times{ with_gc.c_async_query( 'SELECT * FROM user' ) }
end
end end
GC.start GC.start
x.report( 'Without GC' ) do x.report( 'Without GC' ) do
n.times{ without_gc.c_async_query( 'SELECT * FROM user' ) } with_gc_counts( 'Without GC' ) do
n.times{ without_gc.c_async_query( 'SELECT * FROM user' ) }
end
end end
end end
puts $gc_stats.join( ' | ' )