Project

General

Profile

« Previous | Next » 

Revision d8748874

Added by normal almost 9 years ago

st.c: use ccan linked-list

This improves the bm_vm2_bighash benchmark significantly by
removing branches during insert, but slows down anything
requiring iteration with the more complex loop termination
checking.

Speedup ratio of 1.10 - 1.20 is typical for the vm2_bighash
benchmark.

  • include/ruby/st.h (struct st_table): hide struct list_head
  • st.c (struct st_table_entry): adjust struct
    (head, tail): remove shortcut macros
    (st_head): new wrapper function
    (st_init_table_with_size): adjust to new struct and API
    (st_clear): ditto
    (add_direct): ditto
    (unpack_entries): ditto
    (rehash): ditto
    (st_copy): ditto
    (remove_entry): ditto
    (st_shift): ditto
    (st_foreach_check): ditto
    (st_foreach): ditto
    (get_keys): ditto
    (get_values): ditto
    (st_values_check): ditto
    (st_reverse_foreach_check): ditto (unused)
    (st_reverse_foreach): ditto (unused)
    [ruby-core:69726] [Misc #10278]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51034 b2dd03c8-39d4-4d8f-98ff-823fe69b080e