summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2020-08-18 09:41:38 +0200
committerAaron Patterson <aaron.patterson@gmail.com>2020-09-09 11:11:36 -0700
commit5001cc47169614ea07d87651c95c2ee185e374e0 (patch)
tree09f4891cd1a83559b4e4a4793a31c8dfbef64fc9 /benchmark
parent76c7146ab4bb86dc9474efee279a19d31c4374b2 (diff)
Optimize ObjectSpace.dump_all
The two main optimization are: - buffer writes for improved performance - avoid formatting functions when possible ``` | |compare-ruby|built-ruby| |:------------------|-----------:|---------:| |dump_all_string | 1.038| 195.925| | | -| 188.77x| |dump_all_file | 33.453| 139.645| | | -| 4.17x| |dump_all_dev_null | 44.030| 278.552| | | -| 6.33x| ```
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3420
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/objspace_dump_all.yml13
1 files changed, 13 insertions, 0 deletions
diff --git a/benchmark/objspace_dump_all.yml b/benchmark/objspace_dump_all.yml
new file mode 100644
index 0000000000..ebab562d2e
--- /dev/null
+++ b/benchmark/objspace_dump_all.yml
@@ -0,0 +1,13 @@
+prelude: |
+ require 'objspace'
+ require 'tempfile'
+ $objs = 1_000.times.map { Object.new }
+ $strings = 1_000.times.map { |i| "string #{i}" }
+ $file = Tempfile.new('heap')
+ $dev_null = File.open(File::NULL, 'w+')
+
+benchmark:
+ dump_all_string: "ObjectSpace.dump_all(output: :string)"
+ dump_all_file: "ObjectSpace.dump_all(output: $file)"
+ dump_all_dev_null: "ObjectSpace.dump_all(output: $dev_null)"
+loop_count: 1