Actions
Feature #17109
closedEliminate the performance impact of operands' order in array's | and &
Status:
Rejected
Assignee:
-
Target version:
-
Description
When I do intersection (a & b
) or union (a | b
), usually the array in one position is more likely longer than the one in the other position. I always try to remember in what order I should write a
and b
for the best performance. The right answers for current implementation are longer & shorter
and longer | shorter
.
Here I suggest to make it simpler and eliminate the difference.
Sorry I don't know C. Though I suppose my solution might be too blunt and verbose, I hope it demonstrates the idea.
make benchmark ITEM=array_union COMPARE_RUBY=~/.rbenv/versions/2.8.0-dev/bin/ruby
| |compare-ruby|built-ruby|
|:-------------------------|-----------:|---------:|
|small-& | 4.315M| 4.228M|
| | 1.02x| -|
|small-intersection | 4.157M| 4.106M|
| | 1.01x| -|
|big-& | 107.258k| 132.051k|
| | -| 1.23x|
|big-intersection | 103.245k| 128.052k|
| | -| 1.24x|
|big-reverse-intersection | 96.544k| 159.201k|
| | -| 1.65x|
My own test shows 20-30% perf improvement of Array#union.
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0