Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Rule Benchmark
(version: 0)
Comparing performance of:
VERBOSE (1) vs VERBOSE (2) vs INFO (1) vs INFO (2) vs WARN (1) vs WARN (2) vs ERROR (1) vs ERROR (2) vs SILENT (1) vs SILENT (2)
Created:
3 years ago
by:
Guest
Jump to the latest result
Script Preparation code:
var namespaces = []; for (var i = 0; i < 10000; i++) { let predicate = Math.random(); let level = ''; if (predicate < 0.25) { level = ':error'; } else if (predicate < 0.5) { level = ':warn'; } else if (predicate < 0.75) { level = ':verbose'; } namespaces.push(`LH:${Math.floor(Math.random() * 1000)}${level}`); }
Tests:
VERBOSE (1)
const level = 'LH:*'; const rules = level .replace(/\s/g, '') .replace(/\*/g, '.+') .split(',') .reduce((rules, namespace) => { if (!/^-?LH:/.test(namespace)) return rules; let key = 'enabled'; if ('-' === namespace[0]) { key = 'disabled'; namespace = namespace.slice(1); } const rule = new RegExp(`^${namespace}$`); const ruleGroup = rules[key] ?? []; return { ...rules, [key]: [...ruleGroup, rule] }; }, {}); for (const ns of namespaces) { const testRule = (rule) => rule.test(ns); const enabled_ = (rules.enabled?.some(testRule) ?? true) && !rules.disabled?.some(testRule); }
VERBOSE (2)
const level = 'LH:*'; let enabled_ = false; const rules = level .replace(/\s/g, '') .replace(/\*/g, '.+') .split(',') .reduce((rules, namespace) => { if (!/^-?LH:/.test(namespace)) return rules; let enabled = true; if ('-' === namespace[0]) { namespace = namespace.slice(1); enabled = false; } rules[namespace] = { pattern: new RegExp(`^${namespace}$`), enabled }; return rules; }, {}); for (const ns of namespaces) { for (const key of Object.keys(rules).sort().reverse()) { if (rules[key].pattern.test(ns)) { enabled_ = rules[key].enabled; break; } } }
INFO (1)
const level = 'LH:*, -LH:*:verbose'; const rules = level .replace(/\s/g, '') .replace(/\*/g, '.+') .split(',') .reduce((rules, namespace) => { if (!/^-?LH:/.test(namespace)) return rules; let key = 'enabled'; if ('-' === namespace[0]) { key = 'disabled'; namespace = namespace.slice(1); } const rule = new RegExp(`^${namespace}$`); const ruleGroup = rules[key] ?? []; return { ...rules, [key]: [...ruleGroup, rule] }; }, {}); for (const ns of namespaces) { const testRule = (rule) => rule.test(ns); const enabled_ = (rules.enabled?.some(testRule) ?? true) && !rules.disabled?.some(testRule); }
INFO (2)
const level = 'LH:*, -LH:*:verbose'; const rules = level .replace(/\s/g, '') .replace(/\*/g, '.+') .split(',') .reduce((rules, namespace) => { if (!/^-?LH:/.test(namespace)) return rules; let enabled = true; if ('-' === namespace[0]) { namespace = namespace.slice(1); enabled = false; } rules[namespace] = { pattern: new RegExp(`^${namespace}$`), enabled }; return rules; }, {}); for (const ns of namespaces) { for (const key of Object.keys(rules).sort().reverse()) { if (rules[key].pattern.test(ns)) { enabled_ = rules[key].enabled; break; } } }
WARN (1)
const level = 'LH:*, LH:*:warn, LH:*:error'; const rules = level .replace(/\s/g, '') .replace(/\*/g, '.+') .split(',') .reduce((rules, namespace) => { if (!/^-?LH:/.test(namespace)) return rules; let key = 'enabled'; if ('-' === namespace[0]) { key = 'disabled'; namespace = namespace.slice(1); } const rule = new RegExp(`^${namespace}$`); const ruleGroup = rules[key] ?? []; return { ...rules, [key]: [...ruleGroup, rule] }; }, {}); for (const ns of namespaces) { const testRule = (rule) => rule.test(ns); const enabled_ = (rules.enabled?.some(testRule) ?? true) && !rules.disabled?.some(testRule); }
WARN (2)
const level = 'LH:*, LH:*:warn, LH:*:error'; const rules = level .replace(/\s/g, '') .replace(/\*/g, '.+') .split(',') .reduce((rules, namespace) => { if (!/^-?LH:/.test(namespace)) return rules; let enabled = true; if ('-' === namespace[0]) { namespace = namespace.slice(1); enabled = false; } rules[namespace] = { pattern: new RegExp(`^${namespace}$`), enabled }; return rules; }, {}); for (const ns of namespaces) { for (const key of Object.keys(rules).sort().reverse()) { if (rules[key].pattern.test(ns)) { enabled_ = rules[key].enabled; break; } } }
ERROR (1)
const level = '-LH:*, LH:*:error'; const rules = level .replace(/\s/g, '') .replace(/\*/g, '.+') .split(',') .reduce((rules, namespace) => { if (!/^-?LH:/.test(namespace)) return rules; let key = 'enabled'; if ('-' === namespace[0]) { key = 'disabled'; namespace = namespace.slice(1); } const rule = new RegExp(`^${namespace}$`); const ruleGroup = rules[key] ?? []; return { ...rules, [key]: [...ruleGroup, rule] }; }, {}); for (const ns of namespaces) { const testRule = (rule) => rule.test(ns); const enabled_ = (rules.enabled?.some(testRule) ?? true) && !rules.disabled?.some(testRule); }
ERROR (2)
const level = '-LH:*, LH:*:error'; const rules = level .replace(/\s/g, '') .replace(/\*/g, '.+') .split(',') .reduce((rules, namespace) => { if (!/^-?LH:/.test(namespace)) return rules; let enabled = true; if ('-' === namespace[0]) { namespace = namespace.slice(1); enabled = false; } rules[namespace] = { pattern: new RegExp(`^${namespace}$`), enabled }; return rules; }, {}); for (const ns of namespaces) { for (const key of Object.keys(rules).sort().reverse()) { if (rules[key].pattern.test(ns)) { enabled_ = rules[key].enabled; break; } } }
SILENT (1)
const level = '-LH:*'; const rules = level .replace(/\s/g, '') .replace(/\*/g, '.+') .split(',') .reduce((rules, namespace) => { if (!/^-?LH:/.test(namespace)) return rules; let key = 'enabled'; if ('-' === namespace[0]) { key = 'disabled'; namespace = namespace.slice(1); } const rule = new RegExp(`^${namespace}$`); const ruleGroup = rules[key] ?? []; return { ...rules, [key]: [...ruleGroup, rule] }; }, {}); for (const ns of namespaces) { const testRule = (rule) => rule.test(ns); const enabled_ = (rules.enabled?.some(testRule) ?? true) && !rules.disabled?.some(testRule); }
SILENT (2)
const level = '-LH:*'; const rules = level .replace(/\s/g, '') .replace(/\*/g, '.+') .split(',') .reduce((rules, namespace) => { if (!/^-?LH:/.test(namespace)) return rules; let enabled = true; if ('-' === namespace[0]) { namespace = namespace.slice(1); enabled = false; } rules[namespace] = { pattern: new RegExp(`^${namespace}$`), enabled }; return rules; }, {}); for (const ns of namespaces) { for (const key of Object.keys(rules).sort().reverse()) { if (rules[key].pattern.test(ns)) { enabled_ = rules[key].enabled; break; } } }
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (10)
Previous results
Fork
Test case name
Result
VERBOSE (1)
VERBOSE (2)
INFO (1)
INFO (2)
WARN (1)
WARN (2)
ERROR (1)
ERROR (2)
SILENT (1)
SILENT (2)
Fastest:
N/A
Slowest:
N/A
Latest run results:
No previous run results
This benchmark does not have any results yet. Be the first one
to run it!
Autogenerated LLM Summary
(model
llama3.2:3b
, generated one year ago):
A JSON array of browser execution data! Here are the results: **Browser:** Chrome 111 **Device Platform:** Desktop **Operating System:** Windows The data shows varying execution rates for different test names: * **INFO (1)**: 836 executions per second * **WARN (1)**: 1913 executions per second * **VERBOSE (1)**: 1858 executions per second * **ERROR (1)**: 1244 executions per second * **SILENT (1)**: 2020 executions per second And for subsequent tests: * **INFO (2)**: 146 executions per second * **WARN (2)**: 118 executions per second * **VERBOSE (2)**: 232 executions per second * **ERROR (2)**: 148 executions per second * **SILENT (2)**: 232 executions per second Let me know if you'd like me to analyze or compare these results further!
Related benchmarks:
Math max
floor vs toPrecision
Comparing performance of Math.floor(x); vs Math.round(x); vs (0.5 + x) << 0;
Math.pow(x,0.5) vs x ** 0.5
hui's test case for round
Comments
Confirm delete:
Do you really want to delete benchmark?