WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
153960
Update how the benchmark is run
https://bugs.webkit.org/show_bug.cgi?id=153960
Summary
Update how the benchmark is run
Jon Lee
Reported
2016-02-07 01:31:07 PST
Update how the benchmark is run
Attachments
Patch
(46.96 KB, patch)
2016-02-07 01:33 PST
,
Jon Lee
no flags
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Jon Lee
Comment 1
2016-02-07 01:33:06 PST
Created
attachment 270815
[details]
Patch
Said Abou-Hallawa
Comment 2
2016-02-08 18:24:15 PST
Comment on
attachment 270815
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=270815&action=review
> PerformanceTests/Animometer/resources/runner/benchmark-runner.js:99 > + samplers[test.name] = results;
Should we change the array name: samplers => sampleResults (or something similar)?
> PerformanceTests/Animometer/tests/resources/main.js:37 > + return timestamp > this._endTimestamp;
Shouldn't the condition be timestamp >= this._endTimestamp? Any extra work, like changing the complexity, skipping layout frames or drawing will exceed the test time limit.
> PerformanceTests/Animometer/tests/resources/main.js:42 > + return this._sampler.process();
Should not the function be renamed processResults() or something else? It is hard to see the relationship between 'results' and 'sampler.process'.
> PerformanceTests/Animometer/tests/resources/main.js:62 > + time: timestamp - this._startTimestamp,
Shouldn't time => timeDelta, intervalLength, or duration?
> PerformanceTests/Animometer/tests/resources/main.js:142 > + if (!this._startedSampling && timestamp > this._samplingTimestamp) {
Why do we have to skip this statement for the first time when timestamp == this._samplingTimestamp?
> PerformanceTests/Animometer/tests/resources/main.js:374 > + this._stage.animate(0);
I do not understand this. Why we have to animate the stage with timeDelta=0 for 100 ms?
> PerformanceTests/Animometer/tests/resources/main.js:380 > + if (this._controller.shouldStop(this._currentTimestamp)) {
Shouldn't _controller.update() come after checking _controller.shouldStop()?
> PerformanceTests/ChangeLog:59 > + The previous version of this controller ignored the frame that came after the
Unneeded spaces.
> PerformanceTests/ChangeLog:82 > + the estimation error converges, so calculate the gain ahead of time.
This is great change. Thanks for taking the time for investigating the math and simplifying the code.
Said Abou-Hallawa
Comment 3
2016-02-08 18:24:38 PST
Unofficial r=me
Jon Lee
Comment 4
2016-02-08 19:18:50 PST
Comment on
attachment 270815
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=270815&action=review
>> PerformanceTests/Animometer/resources/runner/benchmark-runner.js:99 >> + samplers[test.name] = results; > > Should we change the array name: samplers => sampleResults (or something similar)?
Sure. I'll do that in a follow-up.
>> PerformanceTests/Animometer/tests/resources/main.js:37 >> + return timestamp > this._endTimestamp; > > Shouldn't the condition be timestamp >= this._endTimestamp? Any extra work, like changing the complexity, skipping layout frames or drawing will exceed the test time limit.
In _animateLoop, if I move the update() call to after shouldStop(), then I need to make sure that this last frame has a chance to process and get sampled. Otherwise some controllers like the ramp will not get the last ramp sampled.
>> PerformanceTests/Animometer/tests/resources/main.js:42 >> + return this._sampler.process(); > > Should not the function be renamed processResults() or something else? It is hard to see the relationship between 'results' and 'sampler.process'.
Done. I went with processSamples().
>> PerformanceTests/Animometer/tests/resources/main.js:62 >> + time: timestamp - this._startTimestamp, > > Shouldn't time => timeDelta, intervalLength, or duration?
Here, I'm offsetting all of the absolute timestamps by the start timestamp so that the first sample is at time 0.
>> PerformanceTests/Animometer/tests/resources/main.js:142 >> + if (!this._startedSampling && timestamp > this._samplingTimestamp) { > > Why do we have to skip this statement for the first time when timestamp == this._samplingTimestamp?
You're right. Updated to timestamp >= this._samplingTimestamp.
>> PerformanceTests/Animometer/tests/resources/main.js:374 >> + this._stage.animate(0); > > I do not understand this. Why we have to animate the stage with timeDelta=0 for 100 ms?
I want to warm up the scene by mimicking the animation loop we will take once the test starts. I need to keep this._previousTImestamp where it is so we know when 100 ms is passed. I was ok with keeping the scene still during this time period, otherwise I'd have to keep track of another timestamp to properly pass the frame length.
>> PerformanceTests/Animometer/tests/resources/main.js:380 >> + if (this._controller.shouldStop(this._currentTimestamp)) { > > Shouldn't _controller.update() come after checking _controller.shouldStop()?
I can move it to afterwards.
Jon Lee
Comment 5
2016-02-08 19:31:50 PST
Comment on
attachment 270815
[details]
Patch committed 196288
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug