function assertEqIf(prev, curr, expected) { // Branch pruning absolutely want to get rid of the next branch // which causes bailouts, so we forbid inlining of this function.
with({}){} if (prev) {
assertEq(curr, expected); returnfalse;
} returntrue;
}
var f; var template = function (set) { var lastX = 0, x = 0, i = 0, y = 0; var cont = true; while (cont) { // OSR here. for (var i = 0; i < set.length; i++) {
x = x + (inIon() ? 1 : 0); if (set[i].placeholder != set[(i + 1) % set.length].placeholder)
y += 1;
}
// If we bailout in the inner loop, then x will have a smaller value // than the number of iterations.
cont = assertEqIf(lastX > 0, x, set.length); if (inIon())
lastX = x;
x = 0;
} return y;
}
// Set 1, Non existing properties.
f = eval(`(${template})`.replace(".placeholder", ".foo"));
f(testSet1);
// Set 2, Non existing properties.
f = eval(`(${template})`.replace(".placeholder", ".foo"));
f(testSet2);
// Set 1, Existing properties.
f = eval(`(${template})`.replace(".placeholder", ".bar"));
f(testSet1);
// Set 2, Existing properties.
f = eval(`(${template})`.replace(".placeholder", ".bar"));
f(testSet2);
Messung V0.5
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.