Issue #12180 has been updated by Yura Sokolov.


In other words, big web applications are too big for global method cache, and too polymorphic for inline cache.
So general method lookup is inevitable.
With current choice for id_table implementation (34) it takes about 4.5-6%CPU.
With implementation 22 it takes just 2.5-3% CPU.

----------------------------------------
Feature #12180: switch id_table.c variant
https://bugs.ruby-lang.org/issues/12180#change-57507

* Author: Yura Sokolov
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
Currently used variant is 'binary search in small table + hash for large tables'.
But for contemporary CPU it may be better to do linear scan for small tables.

It is already implemented in `id_table.c` and numbered as 35.

Tested with simple Redmine installation on Intel Haswell i7-4770 CPU @ 3.40GHz

- trunk:
`Requests per second:    27.79 [#/sec] (mean)`
- with switched implementation:
`Requests per second:    28.87 [#/sec] (mean)`

---Files--------------------------------
0001-id_table.c-switch-id_table-variant.patch (767 Bytes)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>