Closed Bug 1125398 Opened 11 years ago Closed 11 years ago

Add additional loads to GC ubench

Categories

(Core :: JavaScript: GC, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla38

People

(Reporter: sfink, Assigned: sfink)

References

(Blocks 1 open bug)

Details

Attachments

(9 files)

Add in some more variants of mutator allocation behavior.
Refactoring: split out the ubench code into a separate file.
Attachment #8554002 - Flags: review?(terrence)
Some of the mutator allocation loads I will be adding really need their own set of garbage/frame, total garbage parameters. (eg, if you create as many weakmap entries as you do plain objects, you're gonna have a bad time.) Also change around the UI a bit. Make it more obvious what's going on when you're running a test or tests. Indent stuff. More gooderify.
Attachment #8554006 - Flags: review?(terrence)
Everyone's favorite GC nightmare: WeakMaps!
Attachment #8554008 - Flags: review?(terrence)
So certain optimizations would work really well if you're only considering a single weakmap. Make two of them.
Attachment #8554010 - Flags: review?(terrence)
Benchmark large slots allocation
Attachment #8554011 - Flags: review?(terrence)
Now for the really interesting stuff: DOM nodes! Hm, come to think of it, I ought to have one where I put expandos on stuff.
Attachment #8554013 - Flags: review?(terrence)
ArrayBuffer objects are small and malloc a bunch of data. Good test.
Attachment #8554015 - Flags: review?(terrence)
Let's see how much we can suffer from foreground finalization.
Attachment #8554017 - Flags: review?(terrence)
Attachment #8554002 - Flags: review?(terrence) → review+
Comment on attachment 8554006 [details] [diff] [review] Give each test load its own parameters Review of attachment 8554006 [details] [diff] [review]: ----------------------------------------------------------------- Much nicer. ::: js/src/devtools/gc-ubench/index.html @@ +10,5 @@ > <script src="benchmarks/globalArrayArrayLiteral.js"></script> > <script src="benchmarks/globalArrayLargeArray.js"></script> > <script src="benchmarks/globalArrayObjectLiteral.js"></script> > <script src="benchmarks/globalArrayReallocArray.js"></script> > + <script src="benchmarks/selfCyclicWeakMap.js"></script> I guess this needs to move down a couple patches. @@ +25,5 @@ > <input type="button" id="stop" value="Pause" onclick="stopstart()"></input> > </div> > > <div> > + Duration: <input type="text" id="test-duration" size=3 value="8" onchange="duration_changed()"></input>s "" around the 3 in size=3.
Attachment #8554006 - Flags: review?(terrence) → review+
Comment on attachment 8554008 [details] [diff] [review] Benchmark load: self-referential WeakMap Review of attachment 8554008 [details] [diff] [review]: ----------------------------------------------------------------- I winced reading this. You'll also want to move the import <script> from the prior patch to this patch.
Attachment #8554008 - Flags: review?(terrence) → review+
Comment on attachment 8554010 [details] [diff] [review] Benchmark load: Pair of mutually recursive weakmaps Review of attachment 8554010 [details] [diff] [review]: ----------------------------------------------------------------- Heh.
Attachment #8554010 - Flags: review?(terrence) → review+
Comment on attachment 8554011 [details] [diff] [review] Benchmark load: large objects Review of attachment 8554011 [details] [diff] [review]: ----------------------------------------------------------------- Yup. This should be the slots equivalent of globalArrayReallocArray.
Attachment #8554011 - Flags: review?(terrence) → review+
Comment on attachment 8554013 [details] [diff] [review] Benchmark load; DOM textNodes Review of attachment 8554013 [details] [diff] [review]: ----------------------------------------------------------------- ::: js/src/devtools/gc-ubench/benchmarks/textNodes.js @@ +8,5 @@ > + unload: () => { garbage = []; garbageIndex = 0; }, > + > + defaultGarbagePerFrame: "100K", > + defaultGarbageTotal: "8", > + Whitespace at end of line. @@ +12,5 @@ > + > + makeGarbage: (N) => { > + var a = []; > + for (var i = 0; i < N; i++) > + a.push(document.createTextNode("t" + i)); We'll also want a test with extremely large text nodes.
Attachment #8554013 - Flags: review?(terrence) → review+
Comment on attachment 8554015 [details] [diff] [review] Benchmark load: large ArrayBuffers (for big malloc data) Review of attachment 8554015 [details] [diff] [review]: ----------------------------------------------------------------- I guess those don't get nursery alloc with inline storage anymore?
Attachment #8554015 - Flags: review?(terrence) → review+
Attachment #8554017 - Flags: review?(terrence) → review+
(In reply to Terrence Cole [:terrence] from comment #14) > Comment on attachment 8554015 [details] [diff] [review] > Benchmark load: large ArrayBuffers (for big malloc data) > > Review of attachment 8554015 [details] [diff] [review]: > ----------------------------------------------------------------- > > I guess those don't get nursery alloc with inline storage anymore? Large ones do not because they're large. Then again, small ones don't either, because they have finalizers. :-) But it's probably not a loss, because small typed arrays and typed objects store their data inline now as long as you don't ask for their buffers. And I *think* they're nursery-allocatable too.
Borrowing from smaug's event creation microbenchmark.
Attachment #8554862 - Flags: review?(terrence)
Attachment #8554862 - Flags: review?(terrence) → review+
Blocks: 1147983
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: