Comment #16 on issue 2513 by [email protected]: life benchmark slowness
http://code.google.com/p/v8/issues/detail?id=2513
Seems to be a regression in emscripten, as older builds of the life
benchmark still run fast in V8.
The issue this time is the line:
i15 = ((HEAP32[i3 + (((i16 + 32 | 0) % 32 | 0) + i14 << 2) >> 2] | 0) != 0)
+ i15 | 0;
in function _evolve(), or more specifically the pattern "(foo != 0) + bar".
In plain JS semantics, the comparison returns a boolean, and V8 doesn't
have fast-path handling for adding booleans and integers (because nobody
would ever do that, right?). When I explicitly coerce the boolean to int
as "((foo != 0) | 0) + bar", performance goes way up.
In terms of asm.js types, I would suggest to consider having comparison
operators return intish rather than int. To avoid having to write "if ((foo
bar) | 0) {...}", maybe conditionals' input requirements could be relaxed
from int to intish.
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.