aboutsummaryrefslogtreecommitdiffstats
path: root/benchmark
diff options
context:
space:
mode:
authorDylan Thacker-Smith <dylan.smith@shopify.com>2019-09-27 12:24:25 -0400
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-09-28 01:24:24 +0900
commita1fda16b238f24cf55814ecc18f716cbfff8dd91 (patch)
treebcd7856a7f56f0a9629998abb757c7f1daf17ea7 /benchmark
parent869e2dd8c8efc1e7a043c9eee82d97c47befbcc7 (diff)
downloadruby-a1fda16b238f24cf55814ecc18f716cbfff8dd91.tar.gz
Optimize Array#flatten and flatten! for already flattened arrays (#2495)
* Optimize Array#flatten and flatten! for already flattened arrays * Add benchmark for Array#flatten and Array#flatten! [Bug #16119]
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/array_flatten.yml19
1 files changed, 19 insertions, 0 deletions
diff --git a/benchmark/array_flatten.yml b/benchmark/array_flatten.yml
new file mode 100644
index 0000000000..88ef544ba0
--- /dev/null
+++ b/benchmark/array_flatten.yml
@@ -0,0 +1,19 @@
+prelude: |
+ small_flat_ary = 5.times.to_a
+ large_flat_ary = 100.times.to_a
+ small_pairs_ary = [[1, 2]] * 5
+ large_pairs_ary = [[1, 2]] * 100
+ mostly_flat_ary = 100.times.to_a.push([101, 102])
+
+benchmark:
+ small_flat_ary.flatten: small_flat_ary.flatten
+ small_flat_ary.flatten!: small_flat_ary.flatten!
+ large_flat_ary.flatten: large_flat_ary.flatten
+ large_flat_ary.flatten!: large_flat_ary.flatten!
+ small_pairs_ary.flatten: small_pairs_ary.flatten
+ small_pairs_ary.flatten!: small_pairs_ary.dup.flatten!
+ large_pairs_ary.flatten: large_pairs_ary.flatten
+ large_pairs_ary.flatten!: large_pairs_ary.dup.flatten!
+ mostly_flat_ary.flatten: mostly_flat_ary.flatten
+ mostly_flat_ary.flatten!: mostly_flat_ary.dup.flatten!
+loop_count: 10000