CompressionBenchmark / index.html
jzxiao's picture
Publish compression benchmark results and interactive leaderboard
bfe13e2 verified
Raw History Blame Contribute Delete
9.76 kB
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="THULab time-series compression benchmark: measured compression rates, encoding and decoding costs, and dataset coverage.">
<meta name="color-scheme" content="light dark">
<title>THULab | Time Series Compression Benchmark</title>
<link rel="stylesheet" href="style.css">
<script src="app.js" type="module"></script>
</head>
<body>
<a class="skip-link" href="#content">Skip to results</a>
<header class="site-header">
<a class="brand" href="#overall"><span class="brand-mark">THU</span><span>THULab <span class="brand-sub">Compression Benchmark</span></span></a>
<div class="header-links"><a href="https://github.com/xjz17/web_compression" target="_blank" rel="noopener">Project code ↗</a><button id="theme" class="quiet-button" type="button" aria-label="Switch color theme">Theme</button></div>
</header>
<main id="content">
<section class="intro" aria-labelledby="title">
<p class="eyebrow">Time-series systems research</p>
<h1 id="title">Time Series Compression Leaderboard</h1>
<p class="intro-text">Compare measured storage, encoding, and decoding costs across real time-series datasets.</p>
<p class="snapshot" id="snapshot">Loading benchmark snapshot…</p>
</section>
<div class="summary-strip" id="summary" aria-label="Snapshot coverage">
<div><strong id="dataset-count">…</strong><span>datasets with results</span></div>
<div><strong id="method-count">…</strong><span>method families</span></div>
<div><strong id="runtime-count">…</strong><span>implementation runtimes</span></div>
<div><strong id="record-count">…</strong><span>runtime / codec configurations</span></div>
</div>
<nav class="tabs" aria-label="Benchmark views">
<button id="tab-overall" class="tab active" data-tab="overall" aria-current="page">Overall</button>
<button id="tab-dataset" class="tab" data-tab="dataset">By dataset</button>
<button id="tab-tradeoffs" class="tab" data-tab="tradeoffs">Trade-offs</button>
<button id="tab-methods" class="tab" data-tab="methods">Methods</button>
<button id="tab-paper" class="tab" data-tab="paper">Paper snapshot</button>
<button id="tab-about" class="tab" data-tab="about">About</button>
</nav>
<div id="load-error" class="error-message" role="alert" hidden></div>
<section id="results-view" aria-label="Compression results">
<div class="filters" id="filters">
<label>Runtime<select id="runtime"></select></label>
<label>Data type<select id="dtype"><option value="overall">All numeric</option><option value="int">Integer</option><option value="float">Floating point</option></select></label>
<label>Float precision<select id="precision"><option value="all">All precision</option><option value="fixed">Fixed precision</option><option value="non_fixed">Non-fixed precision</option></select></label>
<label>Dataset<select id="dataset"><option value="all">All datasets</option></select></label>
<label>Method rows<select id="row-mode"><option value="family">Best measured per family</option><option value="configuration">Exact configuration</option></select></label>
<label>Method family<select id="family"><option value="all">All families</option></select></label>
<label class="search-field">Find a method<input id="search" type="search" placeholder="e.g. REGER, Zstd, Gorilla" autocomplete="off"></label>
</div>
<div class="toolbar">
<div><h2 id="view-title">Overall leaderboard</h2><p id="selection-summary" class="muted" aria-live="polite">Reading published results…</p></div>
<div class="toolbar-actions"><button id="reset" class="quiet-button">Reset filters</button><button id="download" class="primary-button" disabled>Download CSV</button></div>
</div>
<div class="results-note" id="results-note">Compression rate = compressed bytes / original bytes. Lower rates and lower ns/point are better.</div>
<div class="table-settings">
<label><input id="complete-only" type="checkbox"> Only methods covering the full selection</label>
<details><summary>Display columns</summary><div id="column-options" class="column-options"></div></details>
</div>
<div id="chart-view" hidden>
<div class="chart-controls"><label>Vertical axis<select id="chart-metric"><option value="compression_time">Encoding cost (ns/point)</option><option value="decompression_time">Decoding cost (ns/point)</option></select></label><span class="muted">Lower and further left is better. Click a point for method details.</span></div>
<div id="chart" class="chart" aria-label="Compression rate and execution cost scatter plot"></div>
</div>
<div id="leaderboard-wrap" class="table-wrap" tabindex="0" aria-label="Scrollable sortable leaderboard">
<table id="leaderboard"><thead></thead><tbody><tr><td class="loading-cell">Loading measured results…</td></tr></tbody></table>
</div>
<div class="table-footer"><span id="row-count" aria-live="polite"></span><span>Select a method to inspect dataset-level results.</span></div>
<section id="method-detail" class="method-detail" hidden tabindex="-1" aria-labelledby="detail-title"></section>
</section>
<section id="methods-view" class="text-view" hidden><h2>Method configurations</h2><p class="muted">Names and parameters are retained from the project's result files. Availability can differ by runtime and data type.</p><div id="method-catalog"></div></section>
<section id="paper-view" class="text-view" hidden>
<h2>Frozen paper Table 3 snapshot</h2>
<p class="notice">These stored C++ results reproduce the project's frozen paper table. They are separate from the current report-tree leaderboard because source reports and method labels have evolved.</p>
<label style="max-width:300px;margin:20px 0">Paper data scope<select id="paper-scope"><option value="overall">All numeric</option><option value="integer">Integer</option><option value="fixed_float">Fixed-precision float</option><option value="nonfixed_float">Non-fixed-precision float</option></select></label>
<div class="table-wrap"><table id="paper-table"><thead><tr><th>Method</th><th>Stored rank</th><th>Average rate ↓</th><th>Encode ns/point ↓</th><th>Decode ns/point ↓</th><th>Stored balanced score ↓</th></tr></thead><tbody></tbody></table></div>
<p class="muted" style="margin-top:14px">Stored rank and balanced score retain the source table's aggregation. The current leaderboard does not use these values to fill missing measurements.</p>
</section>
<section id="about-view" class="text-view" hidden>
<h2>About this benchmark</h2>
<p>This Space publishes a snapshot of the existing <a href="https://github.com/xjz17/web_compression" target="_blank" rel="noopener">web_compression</a> project results. The layout follows the grouped leaderboard approach of <a href="https://huggingface.co/spaces/Salesforce/GIFT-Eval" target="_blank" rel="noopener">GIFT-Eval</a>.</p>
<div id="methodology"></div>
<h3>Metric definitions</h3>
<dl class="definitions">
<div><dt>Average compression rate ↓</dt><dd>Arithmetic mean of the per-dataset compression rates in the selected scope.</dd></div>
<div><dt>Overall compression rate ↓</dt><dd>Total compressed bytes divided by total original bytes over the selected measured records.</dd></div>
<div><dt>Encoding / decoding cost ↓</dt><dd>Nanoseconds per data point. The aggregation boundary is documented with the snapshot below.</dd></div>
<div><dt>Coverage</dt><dd>Datasets with usable measurements for a method out of the datasets in the selected scope. Missing results are never filled with zero.</dd></div>
</dl>
<h3>Reading the rankings</h3>
<p>Methods with different coverage are measured on different inputs. Coverage counts datasets, not identical columns or point counts. Use the full-coverage filter and inspect a single dataset's input sizes before drawing a direct comparison. Runtime filters keep Python, C++, and Java measurements separate.</p>
<p>By default, each family uses its measured configuration with the lowest compression rate in each dataset. The chosen configuration can vary by dataset. Switch Method rows to Exact configuration to compare a fixed configuration; method details show the exact variant used.</p>
<p>These are published measurements, not experiments executed inside this Space. A reported ratio alone does not establish lossless reconstruction; round-trip checks and hardware details are shown only when their evidence exists in the source snapshot.</p>
<h3>Download and provenance</h3>
<p><a href="data.json" download>Result snapshot (JSON)</a> · <a href="manifest.json" download>Source manifest (JSON)</a></p>
<div id="provenance"></div>
<h3>Contribute a result</h3>
<p>Run the project benchmark and provide the codec/configuration, input identity, encoding and decoding measurements, execution environment, and round-trip validation evidence. Results can be updated from the source project using the snapshot exporter included in the Space repository.</p>
</section>
<noscript><p class="error-message">Enable JavaScript to filter and sort this leaderboard. You can also download <a href="data.json">the results JSON</a>.</p></noscript>
<footer><span>THULab · Time Series Compression Benchmark</span><span id="footer-snapshot"></span></footer>
</main>
</body>
</html>