You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.1 KiB
TypeScript
82 lines
2.1 KiB
TypeScript
import { Type as NType } from "../src/type_utils.ts";
|
|
|
|
const sTypes = ["int", "string", "bool"];
|
|
|
|
let i = 0;
|
|
|
|
setInterval(() => {
|
|
const r1 = Math.floor(Math.random() * 10 / 3);
|
|
const r2 = Math.floor(Math.random() * 10 / 3);
|
|
|
|
console.log(`run ${i} comparing ${sTypes[r1]} and ${sTypes[r2]}`);
|
|
|
|
const _a: NType = r1;
|
|
const _b: NType = r2
|
|
|
|
Deno.bench("NType (boolop)", () => {
|
|
_a === _b || _a + _b !== 8;
|
|
});
|
|
|
|
Deno.bench("NType (switch)", () => {
|
|
let c: boolean;
|
|
|
|
if (_a === _b) {
|
|
c = true;
|
|
} else {
|
|
switch (_a + _b) {
|
|
case 4:
|
|
case 10: c = true; break
|
|
case 8: c = false;
|
|
}
|
|
}
|
|
});
|
|
|
|
const a = sTypes[r1];
|
|
const b = sTypes[r2];
|
|
|
|
Deno.bench("SType (if)", () => {
|
|
let c: boolean;
|
|
|
|
if (a === b) {
|
|
c = true;
|
|
} else {
|
|
if ((a === "int" && b === "string") || (a === "string" && b === "int")) {
|
|
c = true;
|
|
} else if ((a === "int" && b === "boolean") || (a === "boolean" && b === "int")) {
|
|
c = false;
|
|
} else if ((a === "boolean" && b === "string") || (a === "string" && b === "boolean")) {
|
|
c = true;
|
|
}
|
|
}
|
|
});
|
|
|
|
Deno.bench("SType (boolop)", () => {
|
|
let c: boolean;
|
|
|
|
if (a === b) {
|
|
c = true;
|
|
} else {
|
|
c = (
|
|
((a === "int" && b === "string") || (a === "string" && b === "int"))
|
|
|| ((a === "boolean" && b === "string") || (a === "string" && b === "boolean"))
|
|
|| !((a === "int" && b === "boolean") || (a === "boolean" || b === "int"))
|
|
);
|
|
}
|
|
});
|
|
|
|
Deno.bench("SType (if+includes)", () => {
|
|
let c: boolean;
|
|
|
|
if (a === b) {
|
|
c = true;
|
|
} else {
|
|
c = (
|
|
([a, b].includes("int") && [a, b].includes("string"))
|
|
|| ([a, b].includes("boolean") && [a, b].includes("string"))
|
|
|| !([a, b].includes("int") && [a, b].includes("boolean"))
|
|
);
|
|
}
|
|
});
|
|
|
|
i++;
|
|
}, 5000); |