mirror of
https://github.com/ruby/ruby.git
synced 2025-08-27 15:06:10 +02:00
Remove MIN_PRE_ALLOC_SIZE from Strings.
This optimisation is no longer helpful now that we use VWA to allocate strings in larger size pools where they can be embedded.
This commit is contained in:
parent
fc7f852033
commit
bb5fddd070
Notes:
git
2023-01-13 15:32:06 +00:00
2 changed files with 25 additions and 13 deletions
|
@ -661,6 +661,27 @@ CODE
|
|||
assert_equal(Encoding::UTF_8, "#{s}x".encoding)
|
||||
end
|
||||
|
||||
def test_string_interpolations_across_size_pools_get_embedded
|
||||
omit if GC::INTERNAL_CONSTANTS[:SIZE_POOL_COUNT] == 1
|
||||
|
||||
require 'objspace'
|
||||
base_slot_size = GC::INTERNAL_CONSTANTS[:BASE_SLOT_SIZE]
|
||||
small_obj_size = (base_slot_size / 2)
|
||||
large_obj_size = base_slot_size * 2
|
||||
|
||||
a = "a" * small_obj_size
|
||||
b = "a" * large_obj_size
|
||||
|
||||
res = "#{a}, #{b}"
|
||||
dump_res = ObjectSpace.dump(res)
|
||||
dump_orig = ObjectSpace.dump(a)
|
||||
new_slot_size = Integer(dump_res.match(/"slot_size":(\d+)/)[1])
|
||||
orig_slot_size = Integer(dump_orig.match(/"slot_size":(\d+)/)[1])
|
||||
|
||||
assert_match(/"embedded":true/, dump_res)
|
||||
assert_operator(new_slot_size, :>, orig_slot_size)
|
||||
end
|
||||
|
||||
def test_count
|
||||
a = S("hello world")
|
||||
assert_equal(5, a.count(S("lo")))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue