Commit fb4dcb4
committed
The form 'expr rescue {simple}' where simple is immediate values or
values which do not cause any method execution (or side-effects) will
omit generating backtraces since there is no way to get access to $!.
This improves performance of these simple catch-all forms by ~48x.
Note: a follow-on commit can fix 'begin; expr; rescue; {simple}; end' later.
It is much less common and not as ripe a target.
BEFORE:
system ~/work/jruby master 814% jruby --dev ../snippets/bench2.rb
Calculating -------------------------------------
begin moo rescue nil 89.000 i/100ms
moo rescue nil (single)
91.000 i/100ms
-------------------------------------------------
begin moo rescue nil 956.234 (± 4.4%) i/s - 9.612k
moo rescue nil (single)
955.879 (± 4.8%) i/s - 9.555k
system ~/work/jruby master 815% jruby -X-C ../snippets/bench2.rb
Calculating -------------------------------------
begin moo rescue nil 100.000 i/100ms
moo rescue nil (single)
106.000 i/100ms
-------------------------------------------------
begin moo rescue nil 1.085k (± 5.2%) i/s - 10.900k
moo rescue nil (single)
1.072k (± 5.5%) i/s - 10.706k
system ~/work/jruby master 816% jruby ../snippets/bench2.rb
Calculating -------------------------------------
begin moo rescue nil 104.000 i/100ms
moo rescue nil (single)
105.000 i/100ms
-------------------------------------------------
begin moo rescue nil 1.074k (± 5.7%) i/s - 10.712k
moo rescue nil (single)
1.089k (± 5.0%) i/s - 10.920k
system ~/work/jruby master 817% jruby -Xcompile.invokedynamic=true ../snippets/bench2.rb
Calculating -------------------------------------
begin moo rescue nil 112.000 i/100ms
moo rescue nil (single)
122.000 i/100ms
-------------------------------------------------
begin moo rescue nil 1.275k (± 5.4%) i/s - 12.768k
moo rescue nil (single)
1.253k (± 4.7%) i/s - 12.566k
AFTER:
system ~/work/jruby master * 820% jruby --dev ../snippets/bench2.rb
Calculating -------------------------------------
begin moo rescue nil 89.000 i/100ms
moo rescue nil (single)
1.199k i/100ms
-------------------------------------------------
begin moo rescue nil 921.217 (± 5.1%) i/s - 9.256k
moo rescue nil (single)
12.833k (± 4.9%) i/s - 128.293k
system ~/work/jruby master * 821% jruby -X-C ../snippets/bench2.rb
Calculating -------------------------------------
begin moo rescue nil 100.000 i/100ms
moo rescue nil (single)
3.037k i/100ms
-------------------------------------------------
begin moo rescue nil 1.031k (± 6.2%) i/s - 10.300k
moo rescue nil (single)
35.393k (± 5.5%) i/s - 355.329k
system ~/work/jruby master * 822% jruby ../snippets/bench2.rb
Calculating -------------------------------------
begin moo rescue nil 100.000 i/100ms
moo rescue nil (single)
4.725k i/100ms
-------------------------------------------------
begin moo rescue nil 1.119k (± 4.6%) i/s - 11.200k
moo rescue nil (single)
52.318k (± 5.8%) i/s - 524.475k
system ~/work/jruby master * 823% jruby -Xcompile.invokedynamic=true ../snippets/bench2.rb
Calculating -------------------------------------
begin moo rescue nil 106.000 i/100ms
moo rescue nil (single)
5.076k i/100ms
-------------------------------------------------
begin moo rescue nil 1.176k (± 5.5%) i/s - 11.766k
moo rescue nil (single)
49.198k (± 5.5%) i/s - 492.372k
MRI 2.2.2:
system ~/work/jruby master * 824% mri22 ../snippets/bench2.rb
Calculating -------------------------------------
begin moo rescue nil 2.771k i/100ms
moo rescue nil (single)
2.707k i/100ms
-------------------------------------------------
begin moo rescue nil 28.586k (± 5.2%) i/s - 285.413k
moo rescue nil (single)
28.470k (± 4.2%) i/s - 284.235k1 parent 55be66e commit fb4dcb4
File tree
29 files changed
+157
-29
lines changed- core/src/main/java/org/jruby
- ast
- exceptions
- ir
- instructions
- interpreter
- persistence
- targets
- parser
- runtime
29 files changed
+157
-29
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
| 44 | + | |
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | | - | |
| 37 | + | |
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
| 44 | + | |
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| |||
0 commit comments