Closed Bug 698407 Opened 13 years ago Closed 13 years ago

Performance degradation during string concatenation

Categories

(Tamarin Graveyard :: Virtual Machine, defect)

x86_64
macOS
defect
Not set
normal

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: brbaker, Assigned: virgilp)

References

Details

Attachments

(1 file, 1 obsolete file)

Attached file simple testcase (obsolete) —
Performance degradation during verification.

cd performance
./runtests.py language/string/typed/split.as

With the float patch queue this takes about 5 minutes to run, while the tamarin-redux repo runs in about 300ms.

Actually this is pretty interesting, the code reports that it only takes 300ms to actually run, but if you use >$ time $AVM test.abc you can see that it takes about 5 minutes to run. Is this unaccounted for time in the verifier or codegen?

tamarin:
>$ avmshell test.abc
305

float:
>$ time avmshell test.abc
308

real	5m11.250s
user	2m2.796s
sys	3m8.434s
This also happens with -Dinterp on the float branch (OS X 64bit release )
>$ time avmshell -Dinterp test.abc 
286

real	5m10.118s
user	2m1.130s
sys	3m8.967s
Issue is not during verification as -Dverifyonly runs quickly, same as tamarin-redux using release-debugger builds. Title of bug needs to be updated once somebody knows where all of the time is going.
Attached file simple testcase
testcase narrowed down to the string concatenation, I should have taken another second to look at the code the first time
Attachment #570679 - Attachment is obsolete: true
Summary: Performance degradation during verification → Performance degradation during string concatenation
(In reply to Brent Baker from comment #3)
> Created attachment 570701 [details]
> simple testcase
> 
> testcase narrowed down to the string concatenation, I should have taken
> another second to look at the code the first time

GC cycles are completely different between tamarin and the float queue for this code:
Tamarin:
gccount=4 
incremental-marks=34
peak-occupancy: blocks-heap-allocated=7134 blocks-gc-allocated=6427 blocks-private=3665

Float:
gccount=9477
incremental-marks=9500
peak-occupancy: blocks-heap-allocated=38143 blocks-gc-allocated=24823 blocks-private=15095
Compiling the shell with float disabled brings back the lost performance.

Recompile builtins (modify core/builtin.py to set VMCFG_FLOAT=false) and compile with --disable-swf16
Note: interpreter issue (works fine with -Ojit in new VM; works slow with -Dinterp in new VM, but fast with -Dinterp in old VM). 
Note2: I can't for the life of me figure out why this would happen. It makes no sense. Oh well, maybe tomorrow...
fixed in changeset 322:544cc0e3be9c
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Verified fixed in changeset 324:ba70538d70db
Status: RESOLVED → VERIFIED
Flags: in-testsuite+
Flags: flashplayer-triage+
Flags: flashplayer-qrb+
Flags: flashplayer-bug-
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: