зеркало из https://github.com/github/ruby.git
87bc5da60a
[Feature #19678] References from an old object to a write barrier protected young object will not immediately promote the young object. Instead, the young object will age just like any other object, meaning that it has to survive three collections before being promoted to the old generation. References from an old object to a write barrier unprotected object will place the parent object in the remember set for marking during minor collections. This allows the child object to be reclaimed in minor collections at the cost of increased time for minor collections. On one of [Shopify's highest traffic Ruby apps, Storefront Renderer](https://shopify.engineering/how-shopify-reduced-storefront-response-times-rewrite), we saw significant improvements after deploying this feature in production. We compare the GC time and response time of web workers that have the original behaviour (non-experimental group) and this new behaviour (experimental group). We see that with this feature we spend significantly less time in the GC, 0.81x on average, 0.88x on p99, and 0.45x on p99.9. This translates to improvements in average response time (0.96x) and p99 response time (0.92x). |
||
---|---|---|
.. | ||
-ext- | ||
base64 | ||
benchmark | ||
bigdecimal | ||
cgi | ||
coverage | ||
csv | ||
date | ||
did_you_mean | ||
digest | ||
drb | ||
dtrace | ||
erb | ||
error_highlight | ||
etc | ||
excludes | ||
fiber | ||
fiddle | ||
fileutils | ||
fixtures/fake_sorted_set_gem | ||
io | ||
irb | ||
json | ||
lib | ||
logger | ||
mkmf | ||
monitor | ||
net | ||
nkf | ||
objspace | ||
open-uri | ||
openssl | ||
optparse | ||
ostruct | ||
pathname | ||
psych | ||
racc | ||
rdoc | ||
readline | ||
reline | ||
resolv | ||
rinda | ||
ripper | ||
ruby | ||
rubygems | ||
socket | ||
stringio | ||
strscan | ||
syslog | ||
uri | ||
win32ole | ||
yaml | ||
zlib | ||
runner.rb | ||
test_abbrev.rb | ||
test_delegate.rb | ||
test_extlibs.rb | ||
test_find.rb | ||
test_forwardable.rb | ||
test_getoptlong.rb | ||
test_ipaddr.rb | ||
test_mutex_m.rb | ||
test_observer.rb | ||
test_open3.rb | ||
test_pp.rb | ||
test_prettyprint.rb | ||
test_pstore.rb | ||
test_pty.rb | ||
test_rbconfig.rb | ||
test_securerandom.rb | ||
test_set.rb | ||
test_shellwords.rb | ||
test_singleton.rb | ||
test_sorted_set.rb | ||
test_syslog.rb | ||
test_tempfile.rb | ||
test_time.rb | ||
test_timeout.rb | ||
test_tmpdir.rb | ||
test_trick.rb | ||
test_tsort.rb | ||
test_unicode_normalize.rb | ||
test_weakref.rb |