зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1125398 - Give each test load its own parameters, r=terrence
--HG-- extra : rebase_source : 2668e910ed390a2b25dfa83578159635bd99ee3f
This commit is contained in:
Родитель
200d009feb
Коммит
4aa286cfa8
|
@ -12,14 +12,16 @@ var prev;
|
|||
var ctx;
|
||||
|
||||
// Current test state.
|
||||
var garbagePerFrame = undefined;
|
||||
var garbageTotal = undefined;
|
||||
var activeTest = undefined;
|
||||
var testDuration = undefined; // ms
|
||||
var testState = 'idle'; // One of 'idle' or 'running'.
|
||||
var testStart = undefined; // ms
|
||||
var testQueue = [];
|
||||
|
||||
// Global defaults
|
||||
var globalDefaultGarbageTotal = "8M";
|
||||
var globalDefaultGarbagePerFrame = "8K";
|
||||
|
||||
function xpos(index)
|
||||
{
|
||||
return index * 2;
|
||||
|
@ -87,7 +89,7 @@ function drawGraph()
|
|||
|
||||
ctx.fillStyle = 'rgb(255,0,0)';
|
||||
if (worst)
|
||||
ctx.fillText(''+worst+'ms', xpos(worstpos) - 10, ypos(worst) - 14);
|
||||
ctx.fillText(''+worst.toFixed(2)+'ms', xpos(worstpos) - 10, ypos(worst) - 14);
|
||||
|
||||
ctx.beginPath();
|
||||
var where = sampleIndex % numSamples;
|
||||
|
@ -124,7 +126,10 @@ function handler(timestamp)
|
|||
if (testState === 'running' && (timestamp - testStart) > testDuration)
|
||||
end_test(timestamp);
|
||||
|
||||
activeTest.makeGarbage(garbagePerFrame);
|
||||
if (testState == 'running')
|
||||
document.getElementById("test-progress").textContent = ((testDuration - (timestamp - testStart))/1000).toFixed(1) + " sec";
|
||||
|
||||
activeTest.makeGarbage(activeTest.garbagePerFrame);
|
||||
|
||||
var elt = document.getElementById('data');
|
||||
var delay = timestamp - prev;
|
||||
|
@ -187,8 +192,7 @@ function onload()
|
|||
}
|
||||
|
||||
// Load the initial test.
|
||||
activeTest = tests.get('noAllocation');
|
||||
activeTest.load(garbageTotal);
|
||||
change_active_test('noAllocation');
|
||||
|
||||
// Polyfill rAF.
|
||||
var requestAnimationFrame =
|
||||
|
@ -225,19 +229,25 @@ function start_test_cycle(tests_to_run)
|
|||
testStart = performance.now();
|
||||
gHistogram.clear();
|
||||
|
||||
change_active_test(testQueue.pop());
|
||||
console.log(`Running test: ${activeTest.name}`);
|
||||
start_test(testQueue.shift());
|
||||
reset_draw_state();
|
||||
}
|
||||
|
||||
function start_test(testName)
|
||||
{
|
||||
change_active_test(testName);
|
||||
console.log(`Running test: ${testName}`);
|
||||
document.getElementById("test-selection").value = testName;
|
||||
}
|
||||
|
||||
function end_test(timestamp)
|
||||
{
|
||||
document.getElementById("test-progress").textContent = "(not running)";
|
||||
report_test_result(activeTest, gHistogram);
|
||||
gHistogram.clear();
|
||||
console.log(`Ending test ${activeTest.name}`);
|
||||
if (testQueue.length) {
|
||||
change_active_test(testQueue.pop());
|
||||
console.log(`Running test: ${activeTest.name}`);
|
||||
start_test(testQueue.shift());
|
||||
testStart = timestamp;
|
||||
} else {
|
||||
testState = 'idle';
|
||||
|
@ -252,7 +262,8 @@ function report_test_result(test, histogram)
|
|||
var resultElem = document.createElement("div");
|
||||
var score = compute_test_score(histogram);
|
||||
var sparks = compute_test_spark_histogram(histogram);
|
||||
resultElem.innerHTML = `${score} ms/s : ${sparks} : ${test.name} - ${test.description}`;
|
||||
var params = `(${format_units(test.garbagePerFrame)},${format_units(test.garbageTotal)})`;
|
||||
resultElem.innerHTML = `${score.toFixed(3)} ms/s : ${sparks} : ${test.name}${params} - ${test.description}`;
|
||||
resultList.appendChild(resultElem);
|
||||
}
|
||||
|
||||
|
@ -311,14 +322,24 @@ function compute_test_spark_histogram(histogram)
|
|||
function reload_active_test()
|
||||
{
|
||||
activeTest.unload();
|
||||
activeTest.load(garbageTotal);
|
||||
activeTest.load(activeTest.garbageTotal);
|
||||
}
|
||||
|
||||
function change_active_test(new_test_name)
|
||||
{
|
||||
activeTest.unload();
|
||||
if (activeTest)
|
||||
activeTest.unload();
|
||||
activeTest = tests.get(new_test_name);
|
||||
activeTest.load(garbageTotal);
|
||||
|
||||
if (!activeTest.garbagePerFrame)
|
||||
activeTest.garbagePerFrame = activeTest.defaultGarbagePerFrame || globalDefaultGarbagePerFrame;
|
||||
if (!activeTest.garbageTotal)
|
||||
activeTest.garbageTotal = activeTest.defaultGarbageTotal || globalDefaultGarbageTotal;
|
||||
|
||||
document.getElementById("garbage-per-frame").value = format_units(activeTest.garbagePerFrame);
|
||||
document.getElementById("garbage-total").value = format_units(activeTest.garbageTotal);
|
||||
|
||||
activeTest.load(activeTest.garbageTotal);
|
||||
}
|
||||
|
||||
function duration_changed()
|
||||
|
@ -328,7 +349,7 @@ function duration_changed()
|
|||
console.log(`Updated test duration to: ${testDuration / 1000} seconds`);
|
||||
}
|
||||
|
||||
function testchanged()
|
||||
function test_changed()
|
||||
{
|
||||
var select = document.getElementById("test-selection");
|
||||
console.log(`Switching to test: ${select.value}`);
|
||||
|
@ -354,15 +375,29 @@ function parse_units(v)
|
|||
return NaN;
|
||||
}
|
||||
|
||||
function format_units(n)
|
||||
{
|
||||
n = String(n);
|
||||
if (n.length > 9 && n.substr(-9) == "000000000")
|
||||
return n.substr(0, n.length - 9) + "G";
|
||||
else if (n.length > 9 && n.substr(-6) == "000000")
|
||||
return n.substr(0, n.length - 6) + "M";
|
||||
else if (n.length > 3 && n.substr(-3) == "000")
|
||||
return n.substr(0, n.length - 3) + "K";
|
||||
else
|
||||
return String(n);
|
||||
}
|
||||
|
||||
function garbage_total_changed()
|
||||
{
|
||||
var value = parse_units(document.getElementById('garbage-total').value);
|
||||
if (isNaN(value))
|
||||
return;
|
||||
garbageTotal = value;
|
||||
console.log(`Updated garbage-total to ${garbageTotal} items`);
|
||||
if (activeTest)
|
||||
if (activeTest) {
|
||||
activeTest.garbageTotal = value;
|
||||
console.log(`Updated garbage-total to ${activeTest.garbageTotal} items`);
|
||||
reload_active_test();
|
||||
}
|
||||
gHistogram.clear();
|
||||
reset_draw_state();
|
||||
}
|
||||
|
@ -372,6 +407,8 @@ function garbage_per_frame_changed()
|
|||
var value = parse_units(document.getElementById('garbage-per-frame').value);
|
||||
if (isNaN(value))
|
||||
return;
|
||||
garbagePerFrame = value;
|
||||
console.log(`Updated garbage-per-frame to ${garbagePerFrame} items`);
|
||||
if (activeTest) {
|
||||
activeTest.garbagePerFrame = value;
|
||||
console.log(`Updated garbage-per-frame to ${activeTest.garbagePerFrame} items`);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,25 +25,29 @@
|
|||
</div>
|
||||
|
||||
<div>
|
||||
Duration: <input type="text" id="test-duration" size=3 value="8" oninput="duration_changed()"></input>s
|
||||
Duration: <input type="text" id="test-duration" size="3" value="8" onchange="duration_changed()"></input>s
|
||||
<input type="button" id="test-one" value="Run Test" onclick="run_one_test()"></input>
|
||||
<input type="button" id="test-all" value="Run All Tests" onclick="run_all_tests()"></input>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Currently running test:
|
||||
<select id="test-selection" required onchange="testchanged()"></select>
|
||||
Currently running test load:
|
||||
<select id="test-selection" required onchange="test_changed()"></select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Garbage items per frame:
|
||||
<input type="text" id="garbage-per-frame" size=5 value="8K"
|
||||
oninput="garbage_per_frame_changed()"></input>
|
||||
Time remaining: <span id="test-progress">(not running)</span>
|
||||
</div
|
||||
|
||||
<div>
|
||||
Garbage items per frame:
|
||||
<input type="text" id="garbage-per-frame" size="5" value="8K"
|
||||
onchange="garbage_per_frame_changed()"></input>
|
||||
</div>
|
||||
<div>
|
||||
Garbage heap size in items:
|
||||
<input type="text" id="garbage-total" size=5 value="8M"
|
||||
oninput="garbage_total_changed()"></input>
|
||||
Garbage heap size in items:
|
||||
<input type="text" id="garbage-total" size="5" value="8M"
|
||||
onchange="garbage_total_changed()"></input>
|
||||
</div>
|
||||
|
||||
<div id="results-Area">
|
||||
|
|
Загрузка…
Ссылка в новой задаче