diff options
author | Eric Wong <normalperson@yhbt.net> | 2011-02-06 06:09:19 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2011-02-06 06:09:19 +0000 |
commit | b5de76e22ba9f07ae7ea0c63a231f06b51c3f803 (patch) | |
tree | 6bb6d74ac32f9b8096b191a78c1bba649caa2677 | |
parent | 876b1a89cf21e87fdba8159bd369504865c59f73 (diff) | |
download | mall-b5de76e22ba9f07ae7ea0c63a231f06b51c3f803.tar.gz |
avoid unnecessary rb_intern() calls
Micro-optimization :P Oh well ERB makes it easy
-rw-r--r-- | ext/mall/mall.c.erb | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/ext/mall/mall.c.erb b/ext/mall/mall.c.erb index 2fa7270..66c1973 100644 --- a/ext/mall/mall.c.erb +++ b/ext/mall/mall.c.erb @@ -17,7 +17,23 @@ static VALUE mMall; * int keepcost; // top-most, releasable (via malloc_trim) space * }; */ +<% +mallinfo_keys = %w( +arena +ordblks +smblks +hblks +hblkhd +usmblks +fsmblks +uordblks +fordblks +keepcost +) %> +<% mallinfo_keys.each { |x| %> +static VALUE sym_<%= x %>; +<% } %> static VALUE info(VALUE klass) { @@ -25,7 +41,7 @@ static VALUE info(VALUE klass) struct mallinfo stats = mallinfo(); /* whee aggregate returns :( */ #define MALLINFO_SET(KEY) \ - rb_hash_aset(rv, ID2SYM(rb_intern(#KEY)), INT2FIX(stats.KEY)) + rb_hash_aset(rv, sym_##KEY, INT2FIX(stats.KEY)) MALLINFO_SET(arena); MALLINFO_SET(ordblks); @@ -85,6 +101,9 @@ void Init_mall(void) #ifdef HAVE_MALLOC_STATS rb_define_singleton_method(mMall, "dump_stats", dump_stats, 0); #endif /* HAVE_MALLOC_STATS */ +<% mallinfo_keys.each { |x| %> + sym_<%= x %> = ID2SYM(rb_intern("<%= x %>")); +<% } %> <% %w( mxfast nlblks grain keep |