From: normalperson@... Date: 2014-09-18T06:45:01+00:00 Subject: [ruby-core:65102] [ruby-trunk - Feature #10256] [Open] [PATCH] reduce rb_call_info_t 96 => 88 bytes on 64-bit Issue #10256 has been reported by Eric Wong. ---------------------------------------- Feature #10256: [PATCH] reduce rb_call_info_t 96 => 88 bytes on 64-bit https://bugs.ruby-lang.org/issues/10256 * Author: Eric Wong * Status: Open * Priority: Normal * Assignee: Koichi Sasada * Category: core * Target version: current: 2.2.0 ---------------------------------------- Instead of using an 8-byte function pointer, use a small index (may be <=1 byte, but currently 2 bytes for alignment) as array offset and pack it next to flags (where only 9 bits are used). Unfortunately, we cannot rely on C99, yet, so maintenance might be a little uglier (but I think our test suite is good enough to cover). Every word saved on rb_call_info_t seems to result in over 50K in startup savings ("valgrind ruby -e exit"). before: total heap usage: 49,111 allocs, 19,776 frees, 8,444,054 bytes allocated after: total heap usage: 49,057 allocs, 19,721 frees, 8,390,916 bytes allocated Performance does not seem bad on Xeon E3-1230 v3 (8MB cache), (minor +/- across the board): http://80x24.org/bmlog-20140918-035740.9493 ---Files-------------------------------- 0001-rb_call_info_t-reduce-from-96-88-bytes-on-64-bit.patch (10.5 KB) -- https://bugs.ruby-lang.org/