Confirmed users
1,345
edits
Nnethercote (talk | contribs) |
Nnethercote (talk | contribs) |
||
| Line 33: | Line 33: | ||
'''Key features.''' | '''Key features.''' | ||
The benchmark features a quadruply-nested loop. The inner loop is dominated by array gets and some highly repetitive array index computations, including numerous calls to Math.abs(). | The benchmark features a quadruply-nested loop. The inner loop is dominated by array gets and some highly repetitive array index computations, including numerous calls to Math.abs(). | ||
Similar to imaging-desaturate, this benchmark starts with the main array holding integers, but they quickly become doubles. | |||
'''Mozilla-specific things.''' | '''Mozilla-specific things.''' | ||
Nanojit's CSE pass commons up the repetitive index computations beautifully. Using an integer-only version of Math.abs() is easy and makes things much faster ([https://bugzilla.mozilla.org/show_bug.cgi?id=606441 bug 606441]). | Nanojit's CSE pass commons up the repetitive index computations beautifully. Using an integer-only version of Math.abs() is easy and makes things much faster ([https://bugzilla.mozilla.org/show_bug.cgi?id=606441 bug 606441]). | ||
Again, similar to imaging-desaturate, because the array-of-ints becomes an array-of-doubles, the tracer generates code assuming it's always an array-of-ints, and so the fragment for the inner loop frequently (about 50% of the time) side-exits to a secondary fragment. | |||
== imaging-darkroom == | == imaging-darkroom == | ||