Better GC stats
This commit is contained in:
parent
35d2545c17
commit
a9fea270f5
@ -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( ' | ' )
|
Loading…
Reference in New Issue
Block a user