function testConstantBaseFastPathTemplate(xs) {
assertEq(xs.length, $BASE * $BASE); for (let j = 0; j < 200;) { // The fast path can be used for all integers below |base * base|. for (let i = 0; i < $BASE * $BASE; ++i, ++j) {
assertEq(i.toString($BASE), xs[i]);
}
}
}
// Test when Number.prototype.toString is called with a constant base argument // and the fast path for static strings can be used. for (let base = 2; base <= 36; ++base) {
let fn = Function(`return ${testConstantBaseFastPathTemplate}`.replaceAll("$BASE", base))();
let xs = Array.from({length: base * base}, (_, i) => i.toString(base)); for (let i = 0; i < 2; ++i) {
fn(xs);
}
}
function testConstantBaseTemplate(xs) {
assertEq(xs.length, $BASE * $BASE * 2); for (let j = 0; j < 200;) { // The fast path can only be used for integers below |base * base|. for (let i = 0; i < $BASE * $BASE * 2; ++i, ++j) {
assertEq(i.toString($BASE), xs[i]);
}
}
}
// Test when Number.prototype.toString is called with a constant base argument // and the fast path for static strings can't always be used. for (let base = 2; base <= 36; ++base) {
let fn = Function(`return ${testConstantBaseTemplate}`.replaceAll("$BASE", base))();
let xs = Array.from({length: base * base * 2}, (_, i) => i.toString(base)); for (let i = 0; i < 2; ++i) {
fn(xs);
}
}
function testVariableBaseFastPathTemplate(xs, ys) {
assertEq(ys.length, 2);
assertEq(ys[0], ys[1]);
let base = ys[0];
assertEq(xs.length, base * base);
for (let j = 0; j < 200;) { // The fast path can be used for all integers below |base * base|. for (let i = 0; i < base * base; ++i, ++j) {
assertEq(i.toString(ys[i & 1]), xs[i]);
}
}
}
// Test when Number.prototype.toString is called with a non-constant base argument // and the fast path for static strings can be used. for (let base = 2; base <= 36; ++base) {
let fn = Function(`return ${testVariableBaseFastPathTemplate}`)();
let xs = Array.from({length: base * base}, (_, i) => i.toString(base)); for (let i = 0; i < 2; ++i) {
fn(xs, [base, base]);
}
}
function testVariableBaseTemplate(xs, ys) {
assertEq(ys.length, 2);
assertEq(ys[0], ys[1]);
let base = ys[0];
assertEq(xs.length, base * base * 2);
for (let j = 0; j < 200;) { // The fast path can only be used for integers below |base * base|. for (let i = 0; i < base * base * 2; ++i, ++j) {
assertEq(i.toString(ys[i & 1]), xs[i]);
}
}
}
// Test when Number.prototype.toString is called with a non-constant base argument // and the fast path for static strings can't always be used. for (let base = 2; base <= 36; ++base) {
let fn = Function(`return ${testVariableBaseTemplate}`)();
let xs = Array.from({length: base * base * 2}, (_, i) => i.toString(base)); for (let i = 0; i < 2; ++i) {
fn(xs, [base, base]);
}
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.12 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.