This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-website.git


The following commit(s) were added to refs/heads/master by this push:
     new bf546609fd0 [refactor](next) add benckmark landing page (#3647)
bf546609fd0 is described below

commit bf546609fd0f51e229d6a26e7f8282a7877e48d5
Author: Mingyu Chen (Rayner) <[email protected]>
AuthorDate: Thu May 14 14:28:13 2026 -0700

    [refactor](next) add benckmark landing page (#3647)
---
 src/components/home-next/NavbarNext.tsx          |    2 +-
 src/components/why-doris-next/BenchmarkNext.scss | 1290 +++++++++++++++++++++
 src/components/why-doris-next/BenchmarkNext.tsx  |  815 ++++++++++++++
 src/constant/benchmark.data.json                 | 1308 ++++++++++++++++++++++
 src/pages/why-doris/benchmarks/index.tsx         |    6 +
 5 files changed, 3420 insertions(+), 1 deletion(-)

diff --git a/src/components/home-next/NavbarNext.tsx 
b/src/components/home-next/NavbarNext.tsx
index 881c1b81b96..996e59b261e 100644
--- a/src/components/home-next/NavbarNext.tsx
+++ b/src/components/home-next/NavbarNext.tsx
@@ -36,7 +36,7 @@ function buildNavItems(docsHref: string, releasesHref: 
string): NavItem[] {
             label: 'Why Doris',
             items: [
                 { label: 'Doris vs. Others', href: '/why-doris/compare' },
-                { label: 'Benchmarks (coming soon)', href: '#' },
+                { label: 'Benchmarks', href: '/why-doris/benchmarks' },
                 { label: 'Key Features', href: '/why-doris/key-features' },
                 { label: 'User Stories (coming soon)', href: '#' },
             ],
diff --git a/src/components/why-doris-next/BenchmarkNext.scss 
b/src/components/why-doris-next/BenchmarkNext.scss
new file mode 100644
index 00000000000..9a432ae36d7
--- /dev/null
+++ b/src/components/why-doris-next/BenchmarkNext.scss
@@ -0,0 +1,1290 @@
+// Benchmark landing page — fully scoped under `.bench-next` so the prototype's
+// `b-*` selectors don't collide with the rest of the site.
+
+.bench-next {
+    // ── Tokens (mirrors prototype/v14-benchmark/tsx/src/styles/_tokens.scss)
+    --bn-green:         #11A679;
+    --bn-green-deep:    #0B7A58;
+    --bn-green-dark:    #06805F;
+    --bn-green-darker:  #054C39;
+    --bn-green-darkest: #033A2C;
+    --bn-green-tint:    #1FBF8E;
+    --bn-green-glow:    #2DDFA8;
+
+    --bn-cream:       #F5EFE4;
+    --bn-cream-light: #FAF6EE;
+    --bn-cream-warm:  #EFE6D2;
+    --bn-paper:       #FFFCF5;
+
+    --bn-yellow:        #FFD23F;
+    --bn-yellow-bright: #FFE066;
+    --bn-coral:         #FF5C39;
+
+    --bn-ink:      #0F1A14;
+    --bn-ink-soft: #1B2A22;
+
+    --bn-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, 
SFMono-Regular, Menlo, monospace;
+    --bn-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 
sans-serif;
+
+    --bn-container: 1320px;
+    --bn-gutter:    56px;
+
+    position: relative;
+    background: var(--bn-green-dark);
+    color: var(--bn-cream-light);
+    font-family: var(--bn-sans);
+    overflow-x: hidden;
+
+    * { box-sizing: border-box; }
+
+    img { max-width: 100%; display: block; }
+    a   { color: inherit; }
+
+    // ── Layout helpers
+    .b-container {
+        max-width: var(--bn-container);
+        margin: 0 auto;
+        padding: 0 var(--bn-gutter);
+        width: 100%;
+    }
+
+    .b-accent { color: var(--bn-yellow); }
+
+    .b-eyebrow {
+        display: inline-flex;
+        align-items: center;
+        gap: 12px;
+        font-family: var(--bn-mono);
+        font-size: 12px;
+        font-weight: 500;
+        letter-spacing: 0.14em;
+        text-transform: uppercase;
+        color: rgba(245, 239, 228, 0.7);
+        flex-wrap: wrap;
+    }
+
+    .b-eyebrow-line {
+        display: inline-block;
+        width: 28px;
+        height: 1.5px;
+        background: var(--bn-yellow);
+        flex-shrink: 0;
+    }
+
+    .b-btn {
+        display: inline-flex;
+        align-items: center;
+        gap: 0.6rem;
+        padding: 0.95rem 1.5rem;
+        font-family: var(--bn-mono);
+        font-size: 14px;
+        font-weight: 600;
+        letter-spacing: 0.04em;
+        text-transform: uppercase;
+        border-radius: 4px;
+        border: 1.5px solid transparent;
+        cursor: pointer;
+        transition: transform 0.15s ease, background 0.15s ease, border-color 
0.15s ease;
+        text-decoration: none;
+        white-space: nowrap;
+
+        &:hover {
+            transform: translateY(-1px);
+            text-decoration: none;
+        }
+    }
+
+    .b-btn-yellow {
+        background: var(--bn-yellow);
+        color: var(--bn-ink);
+        border-color: var(--bn-yellow);
+
+        &:hover { background: var(--bn-yellow-bright); }
+    }
+
+    .b-btn-primary {
+        background: var(--bn-cream-light);
+        color: var(--bn-green-darker);
+        border-color: var(--bn-cream-light);
+
+        &:hover { background: var(--bn-paper); }
+    }
+
+    .b-btn:disabled,
+    .b-btn[aria-disabled='true'] {
+        cursor: not-allowed;
+        opacity: 0.55;
+
+        &:hover {
+            transform: none;
+            background: var(--bn-cream-light);
+        }
+    }
+
+    .b-shape {
+        position: absolute;
+        pointer-events: none;
+        z-index: 1;
+    }
+
+    .b-shape-diamond {
+        width: 16px;
+        height: 16px;
+        background: var(--bn-yellow);
+        transform: rotate(45deg);
+    }
+
+    .b-shape-circle {
+        width: 14px;
+        height: 14px;
+        border-radius: 50%;
+        background: var(--bn-coral);
+    }
+
+    .b-shape-ring {
+        width: 22px;
+        height: 22px;
+        border-radius: 50%;
+        border: 2px solid var(--bn-yellow);
+    }
+
+    .b-shape-cross {
+        width: 18px;
+        height: 18px;
+        position: absolute;
+
+        &::before,
+        &::after {
+            content: '';
+            position: absolute;
+            background: var(--bn-cream-light);
+            inset: 0;
+        }
+
+        &::before {
+            width: 100%;
+            height: 2px;
+            top: 50%;
+            transform: translateY(-50%);
+        }
+
+        &::after {
+            height: 100%;
+            width: 2px;
+            left: 50%;
+            transform: translateX(-50%);
+        }
+    }
+
+    // ── Reveal-on-scroll
+    [data-reveal],
+    [data-reveal-local] {
+        opacity: 0;
+        transform: translateY(24px);
+        transition:
+            opacity 0.7s cubic-bezier(.2, .8, .2, 1),
+            transform 0.7s cubic-bezier(.2, .8, .2, 1);
+
+        &.is-visible {
+            opacity: 1;
+            transform: none;
+        }
+    }
+
+    [data-reveal-delay='1'] { transition-delay: 0.08s; }
+    [data-reveal-delay='2'] { transition-delay: 0.16s; }
+    [data-reveal-delay='3'] { transition-delay: 0.24s; }
+
+    // 
─────────────────────────────────────────────────────────────────────────
+    // Hero
+    // 
─────────────────────────────────────────────────────────────────────────
+    .b-hero {
+        position: relative;
+        background: var(--bn-green-dark);
+        overflow: hidden;
+        padding: 72px 0;
+
+        .b-hero-inner { position: relative; z-index: 5; }
+
+        .b-hero-title {
+            font-family: var(--bn-mono);
+            font-weight: 700;
+            text-transform: uppercase;
+            letter-spacing: -0.035em;
+            word-spacing: -0.18em;
+            line-height: 0.92;
+            color: var(--bn-cream-light);
+            margin: 0;
+            font-size: clamp(40px, 4.4vw, 62px);
+
+            .b-accent { color: var(--bn-yellow); }
+        }
+
+        .b-hero-sub {
+            font-family: var(--bn-sans);
+            font-size: 15px;
+            line-height: 1.5;
+            word-spacing: -0.12em;
+            color: rgba(245, 239, 228, 0.85);
+            margin: 18px 0 0;
+            max-width: 540px;
+            font-weight: 400;
+        }
+
+        .b-hero-link {
+            color: var(--bn-cream-light);
+            text-decoration: none;
+            border-bottom: 1px solid rgba(255, 210, 63, 0.45);
+            padding-bottom: 1px;
+            transition: color 0.15s ease, border-color 0.15s ease;
+
+            &:hover {
+                color: var(--bn-yellow);
+                border-bottom-color: var(--bn-yellow);
+                text-decoration: none;
+            }
+        }
+    }
+
+    // 
─────────────────────────────────────────────────────────────────────────
+    // Comparison
+    // 
─────────────────────────────────────────────────────────────────────────
+    .b-cmp {
+        background: var(--bn-cream-light);
+        color: var(--bn-ink);
+        padding: 72px 0;
+        position: relative;
+        overflow: hidden;
+
+        .b-cmp-bggrid {
+            position: absolute;
+            inset: 0;
+            background-image: radial-gradient(rgba(15, 26, 20, 0.07) 1.2px, 
transparent 1.2px);
+            background-size: 32px 32px;
+            mask-image: linear-gradient(180deg, transparent, black 18%, black 
82%, transparent);
+            -webkit-mask-image: linear-gradient(180deg, transparent, black 
18%, black 82%, transparent);
+        }
+
+        .b-cmp-head {
+            max-width: 760px;
+            margin-bottom: 56px;
+            position: relative;
+            z-index: 2;
+
+            .b-eyebrow {
+                margin-bottom: 22px;
+                color: rgba(15, 26, 20, 0.62);
+            }
+
+            .b-eyebrow-line { background: var(--bn-green-deep); }
+        }
+    }
+
+    .b-cmp-title {
+        font-family: var(--bn-mono);
+        font-weight: 700;
+        text-transform: uppercase;
+        font-size: clamp(36px, 4.2vw, 56px);
+        line-height: 0.95;
+        letter-spacing: -0.035em;
+        word-spacing: -0.18em;
+        color: var(--bn-ink);
+        margin: 0 0 22px;
+    }
+
+    .b-cmp-sub {
+        font-size: 15px;
+        line-height: 1.6;
+        word-spacing: -0.12em;
+        color: rgba(15, 26, 20, 0.70);
+        max-width: 620px;
+        margin: 0;
+    }
+
+
+    .b-tabs {
+        display: flex;
+        gap: 0;
+        border-bottom: 1px solid rgba(15, 26, 20, 0.14);
+        margin-bottom: 36px;
+        flex-wrap: wrap;
+        position: relative;
+        z-index: 2;
+    }
+
+    .b-tab {
+        font-family: var(--bn-mono);
+        font-size: 12.5px;
+        letter-spacing: 0.12em;
+        text-transform: uppercase;
+        color: rgba(15, 26, 20, 0.55);
+        background: none;
+        border: 0;
+        padding: 18px 26px;
+        cursor: pointer;
+        position: relative;
+        white-space: nowrap;
+        transition: color 0.18s ease;
+
+        &:hover { color: var(--bn-ink); }
+
+        &:hover .b-tab-tip,
+        &:focus-visible .b-tab-tip {
+            opacity: 1;
+            transform: translateX(-50%) translateY(0);
+        }
+
+        &.is-active {
+            color: var(--bn-ink);
+
+            &::after {
+                content: '';
+                position: absolute;
+                left: 0;
+                right: 0;
+                bottom: -1px;
+                height: 2px;
+                background: var(--bn-green-deep);
+            }
+
+            .b-tab-count { color: var(--bn-green-deep); }
+        }
+    }
+
+    .b-tab-tip {
+        position: absolute;
+        bottom: calc(100% + 10px);
+        left: 50%;
+        transform: translateX(-50%) translateY(4px);
+        width: 280px;
+        padding: 12px 14px;
+        background: var(--bn-ink);
+        color: rgba(245, 239, 228, 0.92);
+        font-family: var(--bn-sans);
+        font-size: 12.5px;
+        font-weight: 400;
+        letter-spacing: 0;
+        text-transform: none;
+        line-height: 1.5;
+        text-align: left;
+        border-radius: 6px;
+        opacity: 0;
+        pointer-events: none;
+        transition: opacity 0.18s ease, transform 0.18s ease;
+        z-index: 10;
+        box-shadow: 0 14px 36px -18px rgba(15, 26, 20, 0.55);
+        white-space: normal;
+
+        &::after {
+            content: '';
+            position: absolute;
+            top: 100%;
+            left: 50%;
+            transform: translateX(-50%);
+            border: 6px solid transparent;
+            border-top-color: var(--bn-ink);
+        }
+    }
+
+    .b-sum-row {
+        display: grid;
+        gap: 20px;
+        position: relative;
+        z-index: 2;
+
+        &.is-cols-3 { grid-template-columns: repeat(3, 1fr); }
+        &.is-cols-2 { grid-template-columns: repeat(2, 1fr); }
+    }
+
+    .b-card {
+        background: var(--bn-paper);
+        border: 1px solid rgba(15, 26, 20, 0.10);
+        border-radius: 12px;
+        padding: 30px 28px 26px;
+        display: flex;
+        flex-direction: column;
+        cursor: pointer;
+        text-align: left;
+        color: inherit;
+        font: inherit;
+        position: relative;
+        transition:
+            background 0.25s ease,
+            border-color 0.25s ease,
+            box-shadow 0.25s ease,
+            transform 0.25s ease;
+
+        &:hover {
+            background: var(--bn-paper);
+            border-color: rgba(15, 26, 20, 0.22);
+            box-shadow: 0 12px 32px -16px rgba(15, 26, 20, 0.20);
+            transform: translateY(-2px);
+        }
+
+        &.is-active {
+            background: var(--bn-paper);
+            border-color: var(--bn-green-deep);
+            box-shadow:
+                0 0 0 1px var(--bn-green-deep) inset,
+                0 14px 36px -20px rgba(11, 122, 88, 0.45);
+
+            &::after {
+                content: '';
+                position: absolute;
+                left: 50%;
+                bottom: -10px;
+                width: 18px;
+                height: 18px;
+                background: var(--bn-paper);
+                border-right: 1px solid var(--bn-green-deep);
+                border-bottom: 1px solid var(--bn-green-deep);
+                transform: translateX(-50%) rotate(45deg);
+                z-index: 3;
+            }
+
+            .b-card-tip { color: var(--bn-green-deep); }
+        }
+    }
+
+    .b-card-head {
+        display: flex;
+        justify-content: space-between;
+        align-items: flex-start;
+        margin-bottom: 6px;
+    }
+
+    .b-card-title {
+        font-family: var(--bn-mono);
+        font-weight: 700;
+        text-transform: uppercase;
+        font-size: 22px;
+        line-height: 1.12;
+        letter-spacing: -0.005em;
+        color: var(--bn-ink);
+        margin: 0;
+    }
+
+    .b-card-tag {
+        font-family: var(--bn-mono);
+        font-size: 10.5px;
+        letter-spacing: 0.16em;
+        text-transform: uppercase;
+        color: rgba(15, 26, 20, 0.50);
+        padding-top: 6px;
+    }
+
+    .b-card-metric {
+        font-family: var(--bn-mono);
+        font-size: 11px;
+        letter-spacing: 0.18em;
+        text-transform: uppercase;
+        color: rgba(15, 26, 20, 0.50);
+        margin: 0 0 16px;
+    }
+
+    .b-bars {
+        display: grid;
+        gap: 11px;
+        margin: 6px 0 18px;
+    }
+
+    .b-bar {
+        display: grid;
+        grid-template-columns: 120px 1fr 88px;
+        gap: 14px;
+        align-items: center;
+        font-family: var(--bn-mono);
+        font-size: 12.5px;
+
+        &.is-doris {
+            .b-bar-label {
+                color: var(--bn-green-deep);
+                font-weight: 700;
+            }
+            .b-bar-fill { background: var(--bn-green-deep); }
+            .b-bar-value {
+                color: var(--bn-green-deep);
+                font-weight: 700;
+            }
+        }
+    }
+
+    .b-bar-label {
+        color: rgba(15, 26, 20, 0.78);
+        letter-spacing: 0.02em;
+        display: flex;
+        align-items: center;
+        gap: 0;
+        min-width: 0;
+
+        span {
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+        }
+    }
+
+    .b-bar-partial {
+        display: inline-block;
+        font-family: var(--bn-mono);
+        font-size: 10.5px;
+        font-weight: 700;
+        letter-spacing: 0.02em;
+        vertical-align: 1px;
+    }
+
+    .b-bar-track {
+        height: 10px;
+        background: rgba(15, 26, 20, 0.08);
+        position: relative;
+        border-radius: 1px;
+        overflow: hidden;
+    }
+
+    .b-bar-fill {
+        position: absolute;
+        inset: 0 auto 0 0;
+        background: rgba(15, 26, 20, 0.28);
+        border-radius: 1px;
+        width: 0;
+        transition: width 0.8s cubic-bezier(.2, .8, .2, 1);
+    }
+
+    .b-bar-value {
+        text-align: right;
+        color: var(--bn-ink);
+        font-variant-numeric: tabular-nums;
+        display: flex;
+        align-items: center;
+        justify-content: flex-end;
+        gap: 6px;
+    }
+
+    .b-card-desc {
+        margin-top: auto;
+        padding: 14px 0 0;
+        border-top: 1px dashed rgba(15, 26, 20, 0.20);
+        font-family: var(--bn-sans);
+        font-size: 13.5px;
+        line-height: 1.55;
+        color: rgba(15, 26, 20, 0.72);
+    }
+
+    .b-card-note {
+        margin-top: auto;
+        margin-bottom: 12px;
+        font-family: var(--bn-sans);
+        font-size: 12px;
+        line-height: 1.5;
+        font-style: italic;
+        color: rgba(15, 26, 20, 0.55);
+    }
+
+    .b-card-note + .b-card-desc { margin-top: 0; }
+
+    .b-card-tip {
+        margin-top: 16px;
+        font-family: var(--bn-mono);
+        font-size: 12px;
+        font-weight: 700;
+        letter-spacing: 0.14em;
+        text-transform: uppercase;
+        color: var(--bn-green-deep);
+        display: flex;
+        align-items: center;
+        gap: 6px;
+        transform-origin: left center;
+        animation: b-card-tip-breath 1.8s ease-in-out infinite;
+    }
+
+    @keyframes b-card-tip-breath {
+        0%, 100% { transform: scale(1); }
+        50%      { transform: scale(1.05); }
+    }
+
+    .b-card:hover .b-card-tip,
+    .b-card.is-active .b-card-tip {
+        animation: none;
+        transform: scale(1);
+    }
+
+    @media (prefers-reduced-motion: reduce) {
+        .b-card-tip { animation: none; }
+    }
+
+    // ── Detail strip
+    .b-detail {
+        margin-top: 30px;
+        border: 1px solid var(--bn-green-deep);
+        border-radius: 12px;
+        background: var(--bn-paper);
+        padding: 32px 32px 28px;
+        position: relative;
+        z-index: 2;
+        overflow: hidden;
+        box-shadow: 0 18px 44px -24px rgba(11, 122, 88, 0.35);
+        animation: b-detail-enter 0.5s cubic-bezier(.2, .8, .2, 1);
+    }
+
+    @keyframes b-detail-enter {
+        from { opacity: 0; transform: translateY(-12px); }
+        to   { opacity: 1; transform: none; }
+    }
+
+    .b-detail-head {
+        display: flex;
+        justify-content: space-between;
+        align-items: flex-start;
+        gap: 24px;
+        flex-wrap: wrap;
+        margin-bottom: 24px;
+    }
+
+    .b-detail-title {
+        font-family: var(--bn-mono);
+        font-weight: 700;
+        text-transform: uppercase;
+        font-size: 22px;
+        line-height: 1.12;
+        letter-spacing: -0.005em;
+        color: var(--bn-ink);
+        margin: 0;
+        display: flex;
+        align-items: baseline;
+        gap: 14px;
+        flex-wrap: wrap;
+
+        .b-detail-title-sub {
+            font-family: var(--bn-mono);
+            font-size: 11px;
+            letter-spacing: 0.18em;
+            text-transform: uppercase;
+            color: rgba(15, 26, 20, 0.52);
+            font-weight: 500;
+        }
+    }
+
+    .b-detail-legend {
+        display: flex;
+        gap: 18px;
+        font-family: var(--bn-mono);
+        font-size: 11px;
+        letter-spacing: 0.12em;
+        text-transform: uppercase;
+        color: rgba(15, 26, 20, 0.68);
+        flex-wrap: wrap;
+    }
+
+    .b-detail-legend-item {
+        display: inline-flex;
+        align-items: center;
+        gap: 8px;
+    }
+
+    .b-detail-legend-swatch {
+        width: 11px;
+        height: 11px;
+        border-radius: 1px;
+        display: inline-block;
+    }
+
+    .b-detail-scroll {
+        overflow-x: auto;
+        overflow-y: hidden;
+        border: 1px solid rgba(15, 26, 20, 0.10);
+        border-radius: 8px;
+        background: var(--bn-cream-light);
+
+        &::-webkit-scrollbar { height: 10px; }
+        &::-webkit-scrollbar-track { background: rgba(15, 26, 20, 0.06); }
+        &::-webkit-scrollbar-thumb {
+            background: rgba(15, 26, 20, 0.22);
+            border-radius: 5px;
+        }
+    }
+
+    .b-chart {
+        position: relative;
+        padding: 24px 24px 18px;
+    }
+
+    .b-chart-grid {
+        position: absolute;
+        left: 60px;
+        right: 24px;
+        top: 24px;
+        bottom: 40px;
+        border-bottom: 1px solid rgba(15, 26, 20, 0.22);
+        background-image: linear-gradient(rgba(15, 26, 20, 0.08) 1px, 
transparent 1px);
+        background-size: 100% 25%;
+        background-position: 0 0;
+    }
+
+    .b-chart-yaxis {
+        position: absolute;
+        left: 0;
+        top: 24px;
+        bottom: 40px;
+        width: 54px;
+        display: flex;
+        flex-direction: column;
+        justify-content: space-between;
+        align-items: flex-end;
+        font-family: var(--bn-mono);
+        font-size: 10px;
+        color: rgba(15, 26, 20, 0.55);
+        letter-spacing: 0.06em;
+        padding-right: 6px;
+
+        span { transform: translateY(50%); }
+        span:first-child { transform: translateY(-2px); }
+        span:last-child  { transform: translateY(2px); }
+    }
+
+    .b-chart-body {
+        position: relative;
+        margin-left: 60px;
+        display: flex;
+        align-items: flex-end;
+        gap: 6px;
+        height: 252px;
+    }
+
+    .b-cluster {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        flex: 0 0 auto;
+    }
+
+    .b-cluster-bars {
+        display: flex;
+        align-items: flex-end;
+        gap: 2px;
+        height: 230px;
+    }
+
+    .b-cluster-bar {
+        width: 8px;
+        background: rgba(15, 26, 20, 0.35);
+        border-radius: 1px 1px 0 0;
+        height: 0;
+        transition: height 0.7s cubic-bezier(.2, .8, .2, 1);
+        position: relative;
+        cursor: default;
+
+        &.is-doris { background: var(--bn-green-deep); }
+
+        &.is-failed {
+            background: transparent;
+            border: 1px dashed rgba(255, 92, 57, 0.65);
+            background-image: repeating-linear-gradient(
+                45deg,
+                transparent 0 3px,
+                rgba(255, 92, 57, 0.40) 3px 6px
+            );
+            min-height: 0;
+
+            .b-cluster-bar-tip { color: var(--bn-coral); }
+        }
+
+        &:hover {
+            filter: brightness(1.06);
+            z-index: 20;
+
+            .b-cluster-bar-tip {
+                opacity: 1;
+                transform: translate(-50%, -110%);
+            }
+        }
+    }
+
+    .b-cluster-bar-tip {
+        position: absolute;
+        left: 50%;
+        top: 0;
+        transform: translate(-50%, -100%);
+        background: var(--bn-ink);
+        color: var(--bn-cream-light);
+        font-family: var(--bn-mono);
+        font-size: 11px;
+        padding: 5px 9px;
+        border-radius: 4px;
+        white-space: nowrap;
+        pointer-events: none;
+        opacity: 0;
+        transition: opacity 0.15s, transform 0.15s;
+        border: 1px solid rgba(15, 26, 20, 0.40);
+        z-index: 10;
+    }
+
+    .b-cluster-label {
+        margin-top: 6px;
+        font-family: var(--bn-mono);
+        font-size: 10px;
+        letter-spacing: 0.02em;
+        color: rgba(15, 26, 20, 0.58);
+        height: 16px;
+        line-height: 1;
+        text-align: center;
+        white-space: nowrap;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+    }
+
+    .b-detail-env {
+        margin-top: 18px;
+        font-family: var(--bn-mono);
+        font-size: 12px;
+        letter-spacing: 0.02em;
+        line-height: 1.6;
+        color: rgba(15, 26, 20, 0.70);
+        padding: 14px 18px;
+        background: var(--bn-cream-light);
+        border-radius: 6px;
+        border-left: 2px solid var(--bn-green-deep);
+    }
+
+    .b-detail-env-list {
+        list-style: none;
+        margin: 0;
+        padding: 0;
+        display: flex;
+        flex-direction: column;
+        gap: 4px;
+    }
+
+    .b-detail-env-prod {
+        display: block;
+
+        &.is-doris .b-detail-env-prod-name {
+            color: var(--bn-green-deep);
+            font-weight: 700;
+        }
+    }
+
+    .b-detail-env-prod-name { color: var(--bn-ink); }
+    .b-detail-env-partial   { color: var(--bn-coral); }
+
+    .b-detail-foot {
+        margin-top: 14px;
+        font-family: var(--bn-mono);
+        font-size: 11.5px;
+        color: rgba(15, 26, 20, 0.58);
+    }
+
+    // 
─────────────────────────────────────────────────────────────────────────
+    // Reproduce
+    // 
─────────────────────────────────────────────────────────────────────────
+    .b-repro {
+        background: var(--bn-green-dark);
+        border-top: 1px solid rgba(245, 239, 228, 0.06);
+        padding: 72px 0;
+        position: relative;
+        overflow: hidden;
+    }
+
+    .b-repro-head {
+        max-width: 760px;
+        margin-bottom: 40px;
+        position: relative;
+        z-index: 2;
+
+        .b-eyebrow { margin-bottom: 22px; }
+    }
+
+    .b-method {
+        position: relative;
+        z-index: 2;
+        margin-bottom: 48px;
+        padding: 26px 28px 22px;
+        border: 1px solid rgba(245, 239, 228, 0.10);
+        border-radius: 10px;
+        background: rgba(0, 0, 0, 0.18);
+    }
+
+    .b-method-head {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        gap: 16px;
+        flex-wrap: wrap;
+        margin-bottom: 22px;
+        padding-bottom: 16px;
+        border-bottom: 1px solid rgba(245, 239, 228, 0.10);
+    }
+
+    .b-method-link {
+        font-family: var(--bn-mono);
+        font-size: 12px;
+        font-weight: 600;
+        letter-spacing: 0.12em;
+        text-transform: uppercase;
+        color: var(--bn-yellow);
+        text-decoration: none;
+        border-bottom: 1px solid rgba(255, 210, 63, 0.35);
+        padding-bottom: 2px;
+        transition: color 0.15s ease, border-color 0.15s ease;
+
+        &:hover {
+            color: var(--bn-yellow-bright);
+            border-color: var(--bn-yellow);
+            text-decoration: none;
+        }
+    }
+
+    .b-method-grid {
+        display: grid;
+        grid-template-columns: repeat(3, 1fr);
+        gap: 22px 32px;
+    }
+
+    .b-method-item {
+        display: flex;
+        flex-direction: column;
+        gap: 8px;
+    }
+
+    .b-method-label {
+        font-family: var(--bn-mono);
+        font-size: 11px;
+        font-weight: 700;
+        letter-spacing: 0.18em;
+        text-transform: uppercase;
+        color: var(--bn-yellow);
+    }
+
+    .b-method-body {
+        font-family: var(--bn-sans);
+        font-size: 13.5px;
+        line-height: 1.55;
+        color: rgba(245, 239, 228, 0.82);
+    }
+
+    .b-repro-title {
+        font-family: var(--bn-mono);
+        font-weight: 700;
+        text-transform: uppercase;
+        font-size: clamp(36px, 4.2vw, 56px);
+        line-height: 0.95;
+        letter-spacing: -0.035em;
+        word-spacing: -0.18em;
+        color: var(--bn-cream-light);
+        margin: 0 0 22px;
+    }
+
+    .b-repro-sub {
+        font-size: 15px;
+        line-height: 1.6;
+        word-spacing: -0.12em;
+        color: rgba(245, 239, 228, 0.85);
+        max-width: 620px;
+        margin: 0;
+    }
+
+    .b-repro-grid {
+        display: grid;
+        grid-template-columns: 2fr 3fr;
+        gap: 24px;
+        align-items: stretch;
+        position: relative;
+        z-index: 2;
+    }
+
+    .b-steps {
+        display: flex;
+        flex-direction: column;
+        gap: 14px;
+    }
+
+    .b-step {
+        display: grid;
+        grid-template-columns: 48px 1fr;
+        gap: 18px;
+        padding: 22px 24px;
+        border: 1px solid rgba(245, 239, 228, 0.10);
+        border-radius: 10px;
+        background: rgba(0, 0, 0, 0.16);
+        cursor: pointer;
+        text-align: left;
+        color: inherit;
+        font: inherit;
+        transition: background 0.2s, border-color 0.2s;
+        flex: 1;
+
+        &:hover {
+            background: rgba(0, 0, 0, 0.24);
+            border-color: rgba(245, 239, 228, 0.18);
+        }
+
+        &.is-active {
+            background: rgba(255, 210, 63, 0.06);
+            border-color: rgba(255, 210, 63, 0.45);
+            box-shadow: 0 0 0 1px rgba(255, 210, 63, 0.25) inset;
+
+            .b-step-num { color: var(--bn-yellow); }
+        }
+    }
+
+    .b-step-num {
+        font-family: var(--bn-mono);
+        font-weight: 700;
+        font-size: 24px;
+        color: rgba(245, 239, 228, 0.55);
+        line-height: 1;
+        font-variant-numeric: tabular-nums;
+    }
+
+    .b-step-title {
+        font-family: var(--bn-mono);
+        font-weight: 700;
+        text-transform: uppercase;
+        font-size: 14px;
+        letter-spacing: 0.02em;
+        color: var(--bn-cream-light);
+        margin: 0 0 6px;
+    }
+
+    .b-step-body {
+        font-family: var(--bn-sans);
+        font-size: 14px;
+        line-height: 1.55;
+        color: rgba(245, 239, 228, 0.72);
+        margin: 0;
+    }
+
+    .b-term {
+        position: relative;
+        border: 1px solid rgba(245, 239, 228, 0.10);
+        border-radius: 10px;
+        background: #0A0E0C;
+        display: flex;
+        flex-direction: column;
+        overflow: hidden;
+        box-shadow:
+            0 24px 60px -28px rgba(0, 0, 0, 0.55),
+            0 0 0 1px rgba(0, 0, 0, 0.35);
+
+        pre,
+        pre[class*='language-'] {
+            margin: 0;
+            padding: 28px 28px;
+            font-family: var(--bn-mono);
+            font-size: 13.5px;
+            line-height: 1.75;
+            color: var(--bn-cream-light);
+            background: transparent;
+            white-space: pre;
+            overflow: auto;
+            flex: 1;
+            border: 0;
+            box-shadow: none;
+            border-radius: 0;
+
+            .c-prompt  { color: var(--bn-green-glow); user-select: none; }
+            .c-comment { color: rgba(245, 239, 228, 0.55); }
+            .c-cmd     { color: var(--bn-yellow); }
+            .c-str     { color: #9FDCC7; }
+            .c-arg     { color: #FFCB69; }
+        }
+    }
+
+    .b-term-bar {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        padding: 14px 18px;
+        background: #050706;
+        border-bottom: 1px solid rgba(245, 239, 228, 0.08);
+        font-family: var(--bn-mono);
+        font-size: 11px;
+        letter-spacing: 0.14em;
+        text-transform: uppercase;
+        color: rgba(245, 239, 228, 0.55);
+    }
+
+    .b-term-dots {
+        display: inline-flex;
+        gap: 7px;
+
+        span {
+            width: 11px;
+            height: 11px;
+            border-radius: 50%;
+            background: rgba(245, 239, 228, 0.18);
+        }
+
+        span:nth-child(1) { background: rgba(255, 92, 57, 0.65); }
+        span:nth-child(2) { background: rgba(255, 210, 63, 0.65); }
+        span:nth-child(3) { background: rgba(45, 223, 168, 0.65); }
+    }
+
+    .b-term-title {
+        display: inline-flex;
+        align-items: center;
+        gap: 10px;
+    }
+
+    .b-term-step { color: var(--bn-yellow); }
+
+    .b-term-cursor {
+        display: inline-block;
+        width: 8px;
+        height: 14px;
+        background: var(--bn-cream-light);
+        vertical-align: -2px;
+        animation: b-blink 1.1s steps(2, end) infinite;
+    }
+
+    @keyframes b-blink { 50% { opacity: 0; } }
+
+    // 
─────────────────────────────────────────────────────────────────────────
+    // CTA
+    // 
─────────────────────────────────────────────────────────────────────────
+    .b-cta {
+        background: var(--bn-green-darkest);
+        border-top: 1px solid rgba(245, 239, 228, 0.06);
+        padding: 72px 0;
+        text-align: center;
+        position: relative;
+        overflow: hidden;
+    }
+
+    .b-cta-grid {
+        position: absolute;
+        inset: 0;
+        background-image: radial-gradient(rgba(245, 239, 228, 0.06) 1.2px, 
transparent 1.2px);
+        background-size: 28px 28px;
+        mask-image: radial-gradient(ellipse at center, black 20%, transparent 
70%);
+        -webkit-mask-image: radial-gradient(ellipse at center, black 20%, 
transparent 70%);
+    }
+
+    .b-cta-inner { position: relative; z-index: 5; }
+
+    .b-cta-eyebrow {
+        margin-bottom: 30px;
+        justify-content: center;
+    }
+
+    .b-cta-title {
+        font-family: var(--bn-mono);
+        font-weight: 700;
+        text-transform: uppercase;
+        font-size: clamp(36px, 4.2vw, 56px);
+        line-height: 0.95;
+        letter-spacing: -0.035em;
+        word-spacing: -0.18em;
+        color: var(--bn-cream-light);
+        margin: 0 auto 44px;
+        max-width: 18ch;
+
+        .b-accent { color: var(--bn-yellow); }
+    }
+
+    .b-cta-actions {
+        display: inline-flex;
+        gap: 14px;
+        flex-wrap: wrap;
+        justify-content: center;
+    }
+
+    // 
─────────────────────────────────────────────────────────────────────────
+    // Responsive
+    // 
─────────────────────────────────────────────────────────────────────────
+    @media (max-width: 1100px) {
+        .b-sum-row.is-cols-3 { grid-template-columns: 1fr; }
+        .b-sum-row.is-cols-2 { grid-template-columns: 1fr; }
+        .b-card.is-active::after { display: none; }
+        .b-repro-grid { grid-template-columns: 1fr; }
+        .b-term pre { min-height: 240px; }
+        .b-bar { grid-template-columns: 104px 1fr 76px; }
+        .b-method-grid { grid-template-columns: repeat(2, 1fr); }
+    }
+
+    @media (max-width: 720px) {
+        --bn-gutter: 24px;
+
+        .b-hero,
+        .b-cmp,
+        .b-repro,
+        .b-cta { padding: 56px 0; }
+
+        .b-hero-title { font-size: clamp(32px, 8.6vw, 44px); }
+        .b-hero-sub { font-size: 14px; margin-top: 16px; }
+
+        .b-cmp-head { margin-bottom: 32px; }
+        .b-cmp-title { font-size: clamp(28px, 7.4vw, 40px); margin-bottom: 
16px; }
+        .b-cmp-sub { font-size: 14px; }
+
+        .b-tabs {
+            overflow-x: auto;
+            flex-wrap: nowrap;
+            margin-bottom: 24px;
+            -webkit-overflow-scrolling: touch;
+            scrollbar-width: none;
+
+            &::-webkit-scrollbar { display: none; }
+        }
+        .b-tab {
+            padding: 14px 16px;
+            font-size: 11.5px;
+            flex: 0 0 auto;
+
+            .b-tab-tip { display: none; }
+        }
+
+        // Section 2 (Comparison): on small screens, cards are informational 
only —
+        // the per-query breakdown is hidden to keep the page readable.
+        .b-card {
+            cursor: default;
+            padding: 24px 20px 22px;
+
+            &:hover {
+                transform: none;
+                border-color: rgba(15, 26, 20, 0.12);
+                box-shadow: 0 8px 22px -16px rgba(15, 26, 20, 0.18);
+            }
+
+            &.is-active {
+                background: var(--bn-paper);
+                border-color: rgba(15, 26, 20, 0.12);
+                box-shadow: none;
+
+                &::after { display: none; }
+            }
+        }
+        .b-card-head { gap: 10px; }
+        .b-card-title { font-size: 19px; }
+        .b-card-tip { display: none; }
+        .b-detail { display: none; }
+
+        .b-bar { grid-template-columns: 80px 1fr 56px; gap: 10px; font-size: 
11.5px; }
+
+        .b-method { padding: 22px 18px 18px; }
+        .b-method-grid { grid-template-columns: 1fr; gap: 18px; }
+
+        .b-repro-title { font-size: clamp(28px, 7.4vw, 40px); }
+        .b-cta-title { font-size: clamp(28px, 7.4vw, 40px); margin-bottom: 
32px; }
+    }
+
+    @media (max-width: 480px) {
+        .b-card { padding: 22px 16px 18px; }
+        .b-card-head {
+            flex-direction: column;
+            align-items: flex-start;
+            gap: 4px;
+        }
+        .b-card-title { font-size: 17px; }
+        .b-card-tag { padding-top: 0; }
+        .b-bars { gap: 9px; }
+        .b-bar {
+            grid-template-columns: 68px 1fr 48px;
+            gap: 8px;
+            font-size: 11px;
+        }
+        .b-bar-label { letter-spacing: 0; }
+        .b-card-desc { font-size: 12.5px; padding-top: 12px; }
+        .b-card-note { font-size: 11.5px; }
+    }
+}
diff --git a/src/components/why-doris-next/BenchmarkNext.tsx 
b/src/components/why-doris-next/BenchmarkNext.tsx
new file mode 100644
index 00000000000..c42a842e1cd
--- /dev/null
+++ b/src/components/why-doris-next/BenchmarkNext.tsx
@@ -0,0 +1,815 @@
+import React, {
+    CSSProperties,
+    Fragment,
+    JSX,
+    useEffect,
+    useMemo,
+    useRef,
+    useState,
+} from 'react';
+import Link from '@docusaurus/Link';
+import { LayoutNext } from '../home-next/LayoutNext';
+import benchmarkData from '@site/src/constant/benchmark.data.json';
+import './BenchmarkNext.scss';
+
+/* ──────────────────────────────────────────────────────────────────────────
+ * Types
+ * ────────────────────────────────────────────────────────────────────────── 
*/
+
+type ProductId = 'doris' | 'clickhouse' | 'redshift' | 'snowflake' | 'trino';
+
+interface Product {
+    id: ProductId;
+    name: string;
+    version: string;
+    machine: string;
+    clusterSize: number;
+    totalRuntime: number;
+    queriesCompleted: number;
+    queriesTotal: number;
+    perQuery: Record<string, number | null>;
+}
+
+interface Benchmark {
+    id: string;
+    name: string;
+    scale: string;
+    queries: string[];
+    products: Product[];
+}
+
+interface Tab {
+    id: string;
+    label: string;
+    benchmarks: Benchmark[];
+}
+
+interface BenchmarkDataset {
+    syncedAt: string;
+    tabs: Tab[];
+}
+
+/* ──────────────────────────────────────────────────────────────────────────
+ * Data — loaded from src/constant/benchmark.data.json
+ * ────────────────────────────────────────────────────────────────────────── 
*/
+
+const DATA = benchmarkData as unknown as BenchmarkDataset;
+
+const TAB_DESCRIPTIONS: Record<string, string> = {
+    internal:
+        'Each engine reads and writes data in its own native format, so Doris 
and its peers run on their own storage layers.',
+    iceberg:
+        'Every engine queries the same Apache Iceberg dataset, so storage is 
held constant and only the engine changes.',
+};
+
+const BENCH_DESC: Record<string, string> = {
+    ssb:   'A star-schema benchmark with 13 queries, heavy on wide joins and 
aggregations.',
+    tpch:  'The classic decision-support benchmark: 22 ad-hoc queries against 
a normalized schema.',
+    tpcds: 'The most demanding decision-support benchmark: 99 queries that 
exercise the full surface of an analytical engine.',
+};
+
+const PRODUCT_COLORS: Record<ProductId, string> = {
+    doris:      'var(--bn-green-deep)',
+    clickhouse: '#3D4A55',
+    redshift:   '#A4633A',
+    snowflake:  '#3C6CAA',
+    trino:      'var(--bn-coral)',
+};
+
+/* ──────────────────────────────────────────────────────────────────────────
+ * Reveal-on-scroll
+ * ────────────────────────────────────────────────────────────────────────── 
*/
+
+function useRevealObserver(): void {
+    useEffect(() => {
+        const items = document.querySelectorAll<HTMLElement>('.bench-next 
[data-reveal]');
+        if (!('IntersectionObserver' in window)) {
+            items.forEach(i => i.classList.add('is-visible'));
+            return undefined;
+        }
+        const io = new IntersectionObserver(
+            entries => {
+                entries.forEach(e => {
+                    if (e.isIntersecting) {
+                        e.target.classList.add('is-visible');
+                        io.unobserve(e.target);
+                    }
+                });
+            },
+            { threshold: 0.12, rootMargin: '0px 0px -8% 0px' }
+        );
+        items.forEach(i => io.observe(i));
+        return () => io.disconnect();
+    }, []);
+}
+
+/* ──────────────────────────────────────────────────────────────────────────
+ * Hero
+ * ────────────────────────────────────────────────────────────────────────── 
*/
+
+function Hero(): JSX.Element {
+    return (
+        <section className="b-hero">
+            <div className="b-container b-hero-inner">
+                <h1 className="b-hero-title" data-reveal>
+                    See how fast<br />
+                    <span className="b-accent">Apache Doris</span> really is.
+                </h1>
+                <p className="b-hero-sub" data-reveal data-reveal-delay="1">
+                    Side-by-side query results: Doris versus ClickHouse, 
Redshift, Snowflake, and
+                    Trino on{' '}
+                    <a
+                        className="b-hero-link"
+                        href="https://www.cs.umb.edu/~poneil/StarSchemaB.PDF";
+                        target="_blank"
+                        rel="noopener noreferrer"
+                    >
+                        Star Schema Benchmark
+                    </a>
+                    ,{' '}
+                    <a
+                        className="b-hero-link"
+                        href="https://www.tpc.org/tpch/";
+                        target="_blank"
+                        rel="noopener noreferrer"
+                    >
+                        TPC-H
+                    </a>
+                    , and{' '}
+                    <a
+                        className="b-hero-link"
+                        href="https://www.tpc.org/tpcds/";
+                        target="_blank"
+                        rel="noopener noreferrer"
+                    >
+                        TPC-DS
+                    </a>
+                    .
+                </p>
+            </div>
+        </section>
+    );
+}
+
+/* ──────────────────────────────────────────────────────────────────────────
+ * Summary card row — total-runtime bars per benchmark
+ * ────────────────────────────────────────────────────────────────────────── 
*/
+
+function SummaryBar({ product, max }: { product: Product; max: number }): 
JSX.Element {
+    const [w, setW] = useState(0);
+    const ref = useRef<HTMLDivElement | null>(null);
+    const partial = product.queriesCompleted < product.queriesTotal;
+    const targetW = max > 0 ? (product.totalRuntime / max) * 100 : 0;
+
+    useEffect(() => {
+        if (!ref.current) return undefined;
+        const el = ref.current;
+        if (!('IntersectionObserver' in window)) {
+            setW(targetW);
+            return undefined;
+        }
+        const io = new IntersectionObserver(
+            entries => {
+                entries.forEach(e => {
+                    if (e.isIntersecting) {
+                        requestAnimationFrame(() => setW(targetW));
+                        io.disconnect();
+                    }
+                });
+            },
+            { threshold: 0.25 }
+        );
+        io.observe(el);
+        return () => io.disconnect();
+    }, [targetW]);
+
+    return (
+        <div ref={ref} className={`b-bar ${product.id === 'doris' ? 'is-doris' 
: ''}`}>
+            <div className="b-bar-label">
+                <span title={product.name}>{product.name}</span>
+                {partial ? (
+                    <span
+                        className="b-bar-partial"
+                        title={`completed ${product.queriesCompleted} of 
${product.queriesTotal} queries`}
+                    >
+                        [1]
+                    </span>
+                ) : null}
+            </div>
+            <div className="b-bar-track">
+                <div className="b-bar-fill" style={{ width: `${w}%` }} />
+            </div>
+            <div className="b-bar-value tabular">
+                {product.totalRuntime != null ? 
`${product.totalRuntime.toFixed(1)}s` : '—'}
+            </div>
+        </div>
+    );
+}
+
+function SummaryCard({
+    bench,
+    active,
+    onToggle,
+}: {
+    bench: Benchmark;
+    active: boolean;
+    onToggle: () => void;
+}): JSX.Element {
+    const cardRef = useRef<HTMLButtonElement | null>(null);
+    const [revealed, setRevealed] = useState(false);
+    const sortedProducts = useMemo(
+        () =>
+            [...bench.products].sort((a, b) => {
+                const ar = a.totalRuntime ?? Infinity;
+                const br = b.totalRuntime ?? Infinity;
+                return ar - br;
+            }),
+        [bench]
+    );
+    const max = useMemo(
+        () => Math.max(...sortedProducts.map(p => p.totalRuntime || 0)),
+        [sortedProducts]
+    );
+    const hasPartial = sortedProducts.some(
+        p => p.queriesCompleted < p.queriesTotal
+    );
+
+    useEffect(() => {
+        if (!cardRef.current) return undefined;
+        if (!('IntersectionObserver' in window)) {
+            setRevealed(true);
+            return undefined;
+        }
+        const node = cardRef.current;
+        const io = new IntersectionObserver(
+            entries => {
+                entries.forEach(e => {
+                    if (e.isIntersecting) {
+                        setRevealed(true);
+                        io.unobserve(node);
+                    }
+                });
+            },
+            { threshold: 0.12, rootMargin: '0px 0px -8% 0px' }
+        );
+        io.observe(node);
+        return () => io.disconnect();
+    }, []);
+
+    const handleEnter = () => {
+        const card = cardRef.current;
+        if (!card) return;
+        const fills = card.querySelectorAll<HTMLElement>('.b-bar-fill');
+        const widths = Array.from(fills).map(f => f.style.width);
+        fills.forEach(f => {
+            f.style.transition = 'none';
+            f.style.width = '0%';
+        });
+        void card.offsetWidth;
+        fills.forEach((f, i) => {
+            f.style.transition = '';
+            requestAnimationFrame(() => {
+                f.style.width = widths[i];
+            });
+        });
+    };
+
+    return (
+        <button
+            ref={cardRef}
+            type="button"
+            className={`b-card ${active ? 'is-active' : ''} ${revealed ? 
'is-visible' : ''}`}
+            onClick={onToggle}
+            onMouseEnter={handleEnter}
+            data-reveal-local
+        >
+            <div className="b-card-head">
+                <h3 className="b-card-title">{bench.name}</h3>
+                <span className="b-card-tag">{bench.scale}</span>
+            </div>
+            <div className="b-card-metric">Total Run Time</div>
+            <div className="b-bars">
+                {sortedProducts.map(p => (
+                    <SummaryBar key={p.id} product={p} max={max} />
+                ))}
+            </div>
+            {hasPartial ? (
+                <div className="b-card-note">
+                    [1] ClickHouse couldn&rsquo;t finish some queries without 
rewriting the SQL.
+                    The number above counts only the queries that did finish.
+                </div>
+            ) : null}
+            <div className="b-card-desc">{BENCH_DESC[bench.id] || ''}</div>
+            <div className="b-card-tip">
+                {active ? <>Hide per-query breakdown ↑</> : <>See per-query 
breakdown ↓</>}
+            </div>
+        </button>
+    );
+}
+
+/* ──────────────────────────────────────────────────────────────────────────
+ * Detail strip — per-query grouped bars
+ * ────────────────────────────────────────────────────────────────────────── 
*/
+
+function niceAxis(maxValue: number): { niceMax: number; ticks: number[] } {
+    if (maxValue <= 0) return { niceMax: 1, ticks: [1, 0] };
+    const roughStep = maxValue / 4;
+    const magnitude = Math.pow(10, Math.floor(Math.log10(roughStep)));
+    const normalized = roughStep / magnitude;
+    let nice: number;
+    if (normalized <= 1) nice = 1;
+    else if (normalized <= 2) nice = 2;
+    else if (normalized <= 5) nice = 5;
+    else nice = 10;
+    const step = nice * magnitude;
+    const niceMax = Math.ceil(maxValue / step) * step;
+    const ticks: number[] = [];
+    for (let v = niceMax; v >= -1e-9; v -= step) ticks.push(Math.round(v * 
1000) / 1000);
+    return { niceMax, ticks };
+}
+
+function DetailStrip({ bench }: { bench: Benchmark }): JSX.Element {
+    const sortedProducts = useMemo(
+        () =>
+            [...bench.products].sort((a, b) => {
+                const ar = a.totalRuntime ?? Infinity;
+                const br = b.totalRuntime ?? Infinity;
+                return ar - br;
+            }),
+        [bench]
+    );
+
+    const dataMax = useMemo(() => {
+        let m = 0;
+        sortedProducts.forEach(p => {
+            bench.queries.forEach(q => {
+                const v = p.perQuery[q];
+                if (v != null && v > m) m = v;
+            });
+        });
+        return m;
+    }, [sortedProducts, bench.queries]);
+
+    const { niceMax, ticks: yticks } = useMemo(() => niceAxis(dataMax), 
[dataMax]);
+
+    const [animated, setAnimated] = useState(false);
+    useEffect(() => {
+        setAnimated(false);
+        const t = setTimeout(() => setAnimated(true), 30);
+        return () => clearTimeout(t);
+    }, [bench.id]);
+
+    const barW = 10;
+    const barGap = 2;
+    const clusterPad = 8;
+    const clusterW =
+        sortedProducts.length * barW + (sortedProducts.length - 1) * barGap + 
clusterPad * 2;
+
+    return (
+        <div className="b-detail">
+            <div className="b-detail-head">
+                <h3 className="b-detail-title">
+                    {bench.name} per-query runtime
+                    <span className="b-detail-title-sub">
+                        scale {bench.scale} · {bench.queries.length} queries
+                    </span>
+                </h3>
+                <div className="b-detail-legend">
+                    {sortedProducts.map(p => (
+                        <span key={p.id} className="b-detail-legend-item">
+                            <span
+                                className="b-detail-legend-swatch"
+                                style={{ background: PRODUCT_COLORS[p.id] || 
'rgba(245,239,228,0.4)' }}
+                            />
+                            {p.name}
+                        </span>
+                    ))}
+                    <span className="b-detail-legend-item" style={{ color: 
'rgba(255,92,57,0.85)' }}>
+                        <span
+                            className="b-detail-legend-swatch"
+                            style={{ background: 'transparent', border: '1px 
dashed rgba(255,92,57,0.7)' }}
+                        />
+                        Failed
+                    </span>
+                </div>
+            </div>
+            <div className="b-detail-scroll">
+                <div
+                    className="b-chart"
+                    style={{ minWidth: 60 + bench.queries.length * clusterW + 
24 }}
+                >
+                    <div className="b-chart-yaxis" aria-hidden="true">
+                        {yticks.map((t, i) => (
+                            <span key={i}>{t}s</span>
+                        ))}
+                    </div>
+                    <div className="b-chart-grid" aria-hidden="true" />
+                    <div className="b-chart-body">
+                        {bench.queries.map((q, qi) => (
+                            <div key={q} className="b-cluster" style={{ width: 
clusterW }}>
+                                <div className="b-cluster-bars" style={{ gap: 
barGap }}>
+                                    {sortedProducts.map((p, pi) => {
+                                        const v = p.perQuery[q];
+                                        const failed = v == null;
+                                        const h = failed ? 18 : Math.max(2, 
((v as number) / niceMax) * 230);
+                                        const color = PRODUCT_COLORS[p.id] || 
'rgba(245,239,228,0.4)';
+                                        const style: CSSProperties = {
+                                            width: barW,
+                                            height: animated ? (failed ? 18 : 
h) : 0,
+                                            background: failed ? undefined : 
color,
+                                            transitionDelay: `${Math.min(qi * 
12 + pi * 30, 1100)}ms`,
+                                        };
+                                        return (
+                                            <span
+                                                key={p.id}
+                                                className={`b-cluster-bar 
${p.id === 'doris' ? 'is-doris' : ''} ${
+                                                    failed ? 'is-failed' : ''
+                                                }`}
+                                                style={style}
+                                            >
+                                                <span 
className="b-cluster-bar-tip">
+                                                    {p.name} · {q} · {failed ? 
'failed' : `${(v as number).toFixed(2)}s`}
+                                                </span>
+                                            </span>
+                                        );
+                                    })}
+                                </div>
+                                <div 
className="b-cluster-label">{q.replace(/^query0?/, 'q')}</div>
+                            </div>
+                        ))}
+                    </div>
+                </div>
+            </div>
+            <div className="b-detail-env">
+                <ul className="b-detail-env-list">
+                    {sortedProducts.map(p => {
+                        const partial = p.queriesCompleted < p.queriesTotal;
+                        return (
+                            <li
+                                key={p.id}
+                                className={`b-detail-env-prod ${p.id === 
'doris' ? 'is-doris' : ''}`}
+                            >
+                                <span className="b-detail-env-prod-name">
+                                    {p.name} {p.version}
+                                </span>
+                                <span>
+                                    {' · '}
+                                    {p.clusterSize} × {p.machine}
+                                </span>
+                                {partial ? (
+                                    <span className="b-detail-env-partial">
+                                        {' · '}completed {p.queriesCompleted} 
/ {p.queriesTotal}
+                                    </span>
+                                ) : null}
+                            </li>
+                        );
+                    })}
+                </ul>
+            </div>
+            <div className="b-detail-foot">
+                Hover any bar for its exact runtime. Hatched bars are queries 
that didn&rsquo;t
+                finish within the time limit.
+            </div>
+        </div>
+    );
+}
+
+/* ──────────────────────────────────────────────────────────────────────────
+ * Comparison section
+ * ────────────────────────────────────────────────────────────────────────── 
*/
+
+function Comparison(): JSX.Element {
+    const [activeTab, setActiveTab] = useState<string>(DATA.tabs[0].id);
+    const [expanded, setExpanded] = useState<string | null>(null);
+
+    const tab = DATA.tabs.find(t => t.id === activeTab) ?? DATA.tabs[0];
+    const expandedBench = tab.benchmarks.find(b => b.id === expanded);
+    const colsClass = `is-cols-${tab.benchmarks.length}`;
+
+    const switchTab = (id: string) => {
+        setActiveTab(id);
+        setExpanded(null);
+    };
+
+    return (
+        <section className="b-cmp">
+            <div className="b-cmp-bggrid" aria-hidden="true" />
+            <div className="b-container">
+                <div className="b-cmp-head" data-reveal>
+                    <h2 className="b-cmp-title">Direct head-to-head, query by 
query.</h2>
+                    <p className="b-cmp-sub">
+                        All three benchmarks lean hard on joins and complex 
analytical SQL.
+                        That&rsquo;s the work Doris is built for. Click any 
benchmark to expand
+                        the per-query breakdown.
+                    </p>
+                </div>
+
+                <div className="b-tabs" role="tablist" data-reveal>
+                    {DATA.tabs.map(t => (
+                        <button
+                            key={t.id}
+                            role="tab"
+                            type="button"
+                            aria-selected={t.id === activeTab}
+                            className={`b-tab ${t.id === activeTab ? 
'is-active' : ''}`}
+                            onClick={() => switchTab(t.id)}
+                        >
+                            {t.label}
+                            {TAB_DESCRIPTIONS[t.id] ? (
+                                <span className="b-tab-tip" role="tooltip">
+                                    {TAB_DESCRIPTIONS[t.id]}
+                                </span>
+                            ) : null}
+                        </button>
+                    ))}
+                </div>
+
+                <div className={`b-sum-row ${colsClass}`}>
+                    {tab.benchmarks.map(b => (
+                        <SummaryCard
+                            key={b.id}
+                            bench={b}
+                            active={expanded === b.id}
+                            onToggle={() => setExpanded(expanded === b.id ? 
null : b.id)}
+                        />
+                    ))}
+                </div>
+
+                {expandedBench ? (
+                    <DetailStrip bench={expandedBench} />
+                ) : null}
+            </div>
+        </section>
+    );
+}
+
+/* ──────────────────────────────────────────────────────────────────────────
+ * Reproduce section
+ * ────────────────────────────────────────────────────────────────────────── 
*/
+
+interface StepLine {
+    p?: string;
+    cmd?: string;
+    arg?: string;
+    c?: string;
+}
+
+interface ReproStep {
+    id: number;
+    title: string;
+    body: string;
+    promptLine: string;
+    file: string;
+    lines: StepLine[];
+}
+
+const METHODOLOGY: { label: string; body: string }[] = [
+    {
+        label: 'What we measure',
+        body: 'Per-query runtime, summed across the selected queries for each 
benchmark.',
+    },
+    {
+        label: 'Runs per query',
+        body: 'Each query runs at least 3×. Cold = first run; hot = faster of 
runs 2 and 3.',
+    },
+    {
+        label: 'Cache control',
+        body: 'Result caches disabled on every engine. Doris BE caches cleared 
before cold runs.',
+    },
+    {
+        label: 'Hardware parity',
+        body: 'Same region and VPC across engines, with identical machine 
class for each cluster.',
+    },
+    {
+        label: 'Data parity',
+        body: 'Same source data loaded into each engine before the run, in its 
native format.',
+    },
+    {
+        label: 'Transparency',
+        body: 'All scripts, queries, configs, and per-run metadata are 
published in the repo.',
+    },
+];
+
+const REPRO_STEPS: ReproStep[] = [
+    {
+        id: 1,
+        title: 'Clone the benchmark scripts',
+        body: 'Pull the benchmark repository onto the machine that will drive 
the run.',
+        promptLine: 'user@bench ~ %',
+        file: 'shell',
+        lines: [
+            { p: '$ ', cmd: 'git clone', arg: 
'https://github.com/velodb/benchmarks' },
+            { c: "Cloning into 'benchmarks'…" },
+            { c: 'remote: Enumerating objects: 1,842, done.' },
+            { c: 'Receiving objects: 100% (1,842/1,842), 4.21 MiB | 8.32 
MiB/s, done.' },
+            { p: '$ ', cmd: 'cd', arg: 'benchmarks' },
+        ],
+    },
+    {
+        id: 2,
+        title: 'Configure your Doris cluster endpoint',
+        body:
+            'Open the config file and fill in the host, port, user, password, 
and database for your Doris cluster.',
+        promptLine: 'user@bench ~/benchmarks %',
+        file: 'benchmark.yaml',
+        lines: [
+            { p: '$ ', cmd: 'vim', arg: 
'benchmarks/clickbench/doris/benchmark.yaml' },
+            { c: '# fill in:' },
+            { c: '#   host: <your-doris-fe-host>' },
+            { c: '#   port: 9030' },
+            { c: '#   user: root' },
+            { c: '#   password: <your-password>' },
+            { c: '#   database: benchmark' },
+        ],
+    },
+    {
+        id: 3,
+        title: 'Install third-party tooling',
+        body:
+            'The runner relies on a few CLI clients (mysql, jq, hyperfine). 
One make target installs them all.',
+        promptLine: 'user@bench ~/benchmarks %',
+        file: 'shell',
+        lines: [
+            { p: '$ ', cmd: 'make', arg: 'thirdparty' },
+            { c: '→ Installing mysql-client … ok' },
+            { c: '→ Installing jq           … ok' },
+            { c: '→ Installing hyperfine    … ok' },
+            { c: 'Third-party tooling ready.' },
+        ],
+    },
+    {
+        id: 4,
+        title: 'Run the benchmark and generate the report',
+        body:
+            'Kick off the run, then collect the report. The runner prints a 
per-query summary as it goes.',
+        promptLine: 'user@bench ~/benchmarks %',
+        file: 'shell',
+        lines: [
+            { p: '$ ', cmd: 'bash', arg: 'benchmark.sh --config 
benchmarks/clickbench/doris/benchmark.yaml' },
+            { c: '[ssb]  q1.1 … 0.149s   q1.2 … 0.106s   q1.3 … 0.099s' },
+            { c: '[ssb]  q2.1 … 1.162s   q2.2 … 1.237s   q2.3 … 1.107s' },
+            { c: '[ssb]  q3.1 … 2.223s   …' },
+            { c: 'Benchmark complete · 13/13 queries · 11.559 s total' },
+            { p: '$ ', cmd: 'make', arg: 'result' },
+            { c: '→ Wrote results to results/aws.32C.json' },
+        ],
+    },
+];
+
+function ReproSection(): JSX.Element {
+    const [active, setActive] = useState(1);
+    const step = REPRO_STEPS.find(s => s.id === active) ?? REPRO_STEPS[0];
+
+    return (
+        <section className="b-repro">
+            <div className="b-container">
+                <div className="b-repro-head" data-reveal>
+                    <h2 className="b-repro-title">
+                        Run it yourself<br />in five minutes.
+                    </h2>
+                    <p className="b-repro-sub">
+                        Every number above is reproducible from open scripts. 
Four steps, four
+                        shell commands. Click a step to see what runs.
+                    </p>
+                </div>
+                <div className="b-method" data-reveal data-reveal-delay="1">
+                    <div className="b-method-head">
+                        <span className="b-eyebrow">
+                            <span className="b-eyebrow-line" />
+                            How we measure
+                        </span>
+                        <a
+                            className="b-method-link"
+                            href="https://github.com/velodb/benchmarks#readme";
+                            target="_blank"
+                            rel="noopener noreferrer"
+                        >
+                            Read the full methodology ↗
+                        </a>
+                    </div>
+                    <div className="b-method-grid">
+                        {METHODOLOGY.map(m => (
+                            <div key={m.label} className="b-method-item">
+                                <div className="b-method-label">{m.label}</div>
+                                <div className="b-method-body">{m.body}</div>
+                            </div>
+                        ))}
+                    </div>
+                </div>
+                <div className="b-repro-grid" data-reveal>
+                    <div className="b-steps">
+                        {REPRO_STEPS.map(s => (
+                            <button
+                                key={s.id}
+                                type="button"
+                                className={`b-step ${s.id === active ? 
'is-active' : ''}`}
+                                onClick={() => setActive(s.id)}
+                            >
+                                <div className="b-step-num">0{s.id}</div>
+                                <div>
+                                    <h4 className="b-step-title">{s.title}</h4>
+                                    <p className="b-step-body">{s.body}</p>
+                                </div>
+                            </button>
+                        ))}
+                    </div>
+
+                    <div className="b-term">
+                        <div className="b-term-bar">
+                            <span className="b-term-dots">
+                                <span /><span /><span />
+                            </span>
+                            <span className="b-term-title">
+                                <span>{step.promptLine}</span>
+                                <span className="b-term-step">— step 
0{step.id}</span>
+                            </span>
+                            <span>{step.file}</span>
+                        </div>
+                        <pre key={step.id}>
+                            {step.lines.map((ln, i) => (
+                                <Fragment key={i}>
+                                    {ln.p ? <span 
className="c-prompt">{ln.p}</span> : null}
+                                    {ln.cmd ? <span 
className="c-cmd">{ln.cmd}</span> : null}
+                                    {ln.arg ? (
+                                        <>
+                                            {' '}
+                                            <span 
className="c-arg">{ln.arg}</span>
+                                        </>
+                                    ) : null}
+                                    {ln.c ? <span 
className="c-comment">{ln.c}</span> : null}
+                                    {'\n'}
+                                </Fragment>
+                            ))}
+                            <span className="c-prompt">$ </span>
+                            <span className="b-term-cursor" />
+                        </pre>
+                    </div>
+                </div>
+            </div>
+        </section>
+    );
+}
+
+/* ──────────────────────────────────────────────────────────────────────────
+ * CTA
+ * ────────────────────────────────────────────────────────────────────────── 
*/
+
+function CTA(): JSX.Element {
+    return (
+        <section className="b-cta">
+            <div className="b-container b-cta-inner">
+                <h2 className="b-cta-title" data-reveal data-reveal-delay="1">
+                    Try Apache <span className="b-accent">Doris</span> on<br 
/>your own data.
+                </h2>
+                <div className="b-cta-actions" data-reveal 
data-reveal-delay="2">
+                    <Link
+                        className="b-btn b-btn-yellow"
+                        to="/docs-next/dev/getting-started/quick-start"
+                    >
+                        <svg
+                            width="14"
+                            height="14"
+                            viewBox="0 0 24 24"
+                            fill="none"
+                            stroke="currentColor"
+                            strokeWidth="2.5"
+                            aria-hidden="true"
+                        >
+                            <path d="M12 4v12m0 0l-5-5m5 5l5-5M4 20h16" />
+                        </svg>
+                        Get Started
+                    </Link>
+                    <button
+                        type="button"
+                        className="b-btn b-btn-primary"
+                        disabled
+                        aria-disabled="true"
+                    >
+                        See Report (Coming Soon)
+                    </button>
+                </div>
+            </div>
+        </section>
+    );
+}
+
+/* ──────────────────────────────────────────────────────────────────────────
+ * Top-level
+ * ────────────────────────────────────────────────────────────────────────── 
*/
+
+export default function BenchmarkNext(): JSX.Element {
+    useRevealObserver();
+    return (
+        <LayoutNext
+            title="Apache Doris Benchmarks: SSB, TPC-H, TPC-DS"
+            description="Direct query-performance comparisons of Apache Doris 
against ClickHouse, Redshift, Snowflake, and Trino across SSB, TPC-H, and 
TPC-DS at scale factor 1000."
+        >
+            <div className="bench-next">
+                <Hero />
+                <Comparison />
+                {/* <ReproSection /> hidden for now; revisit later */}
+                <CTA />
+            </div>
+        </LayoutNext>
+    );
+}
diff --git a/src/constant/benchmark.data.json b/src/constant/benchmark.data.json
new file mode 100644
index 00000000000..009529365da
--- /dev/null
+++ b/src/constant/benchmark.data.json
@@ -0,0 +1,1308 @@
+{
+  "syncedAt": "2026-05-14T06:41:06.361Z",
+  "tabs": [
+    {
+      "id": "internal",
+      "label": "Internal Table Format",
+      "benchmarks": [
+        {
+          "id": "ssb",
+          "name": "SSB",
+          "scale": "sf1000",
+          "queries": [
+            "q1.1",
+            "q1.2",
+            "q1.3",
+            "q2.1",
+            "q2.2",
+            "q2.3",
+            "q3.1",
+            "q3.2",
+            "q3.3",
+            "q3.4",
+            "q4.1",
+            "q4.2",
+            "q4.3"
+          ],
+          "products": [
+            {
+              "id": "doris",
+              "name": "Apache Doris",
+              "version": "4.1.0",
+              "machine": "32C(AWS.m8i.8xlarge)",
+              "clusterSize": 3,
+              "sourcePath": "benchmarks/ssb/sf1000/doris/results/aws.32C.json",
+              "totalRuntime": 11.559,
+              "queriesCompleted": 13,
+              "queriesTotal": 13,
+              "perQuery": {
+                "q1.1": 0.149,
+                "q1.2": 0.106,
+                "q1.3": 0.099,
+                "q2.1": 1.162,
+                "q2.2": 1.237,
+                "q2.3": 1.107,
+                "q3.1": 2.223,
+                "q3.2": 1.418,
+                "q3.3": 0.379,
+                "q3.4": 0.099,
+                "q4.1": 2.534,
+                "q4.2": 0.629,
+                "q4.3": 0.417
+              }
+            },
+            {
+              "id": "clickhouse",
+              "name": "ClickHouse",
+              "version": "25.8.1.8702",
+              "machine": "32C(aws)",
+              "clusterSize": 3,
+              "sourcePath": 
"benchmarks/ssb/sf1000/clickhouse/results/aws.32C.json",
+              "totalRuntime": 82.22,
+              "queriesCompleted": 9,
+              "queriesTotal": 13,
+              "perQuery": {
+                "q1.1": 3.873,
+                "q1.2": 3.057,
+                "q1.3": 3.247,
+                "q2.1": 11.955,
+                "q2.2": 8.417,
+                "q2.3": 7.331,
+                "q3.1": null,
+                "q3.2": null,
+                "q3.3": null,
+                "q3.4": null,
+                "q4.1": 24.052,
+                "q4.2": 10.52,
+                "q4.3": 9.768
+              }
+            },
+            {
+              "id": "redshift",
+              "name": "Redshift",
+              "version": "1.0.163480",
+              "machine": "16XLarge(aws)",
+              "clusterSize": 2,
+              "sourcePath": 
"benchmarks/ssb/sf1000/redshift/results/aws.16XLarge.json",
+              "totalRuntime": 30.06,
+              "queriesCompleted": 13,
+              "queriesTotal": 13,
+              "perQuery": {
+                "q1.1": 0.325,
+                "q1.2": 0.183,
+                "q1.3": 0.168,
+                "q2.1": 1.863,
+                "q2.2": 1.739,
+                "q2.3": 1.632,
+                "q3.1": 6.006,
+                "q3.2": 3.497,
+                "q3.3": 2.344,
+                "q3.4": 1.334,
+                "q4.1": 6.323,
+                "q4.2": 2.631,
+                "q4.3": 2.015
+              }
+            },
+            {
+              "id": "snowflake",
+              "name": "Snowflake",
+              "version": "9.38.4",
+              "machine": "XLarge(aws)",
+              "clusterSize": 1,
+              "sourcePath": 
"benchmarks/ssb/sf1000/snowflake/results/aws.XLarge.json",
+              "totalRuntime": 32.91,
+              "queriesCompleted": 13,
+              "queriesTotal": 13,
+              "perQuery": {
+                "q1.1": 1.708,
+                "q1.2": 1.327,
+                "q1.3": 1.368,
+                "q2.1": 3.214,
+                "q2.2": 2.884,
+                "q2.3": 2.916,
+                "q3.1": 3.15,
+                "q3.2": 2.57,
+                "q3.3": 2.462,
+                "q3.4": 1.653,
+                "q4.1": 3.789,
+                "q4.2": 2.951,
+                "q4.3": 2.918
+              }
+            }
+          ]
+        },
+        {
+          "id": "tpch",
+          "name": "TPC-H",
+          "scale": "sf1000",
+          "queries": [
+            "q1",
+            "q2",
+            "q3",
+            "q4",
+            "q5",
+            "q6",
+            "q7",
+            "q8",
+            "q9",
+            "q10",
+            "q11",
+            "q12",
+            "q13",
+            "q14",
+            "q15",
+            "q16",
+            "q17",
+            "q18",
+            "q19",
+            "q20",
+            "q21",
+            "q22"
+          ],
+          "products": [
+            {
+              "id": "doris",
+              "name": "Apache Doris",
+              "version": "4.1.0",
+              "machine": "32C(AWS.m8i.8xlarge)",
+              "clusterSize": 3,
+              "sourcePath": 
"benchmarks/tpch/sf1000/doris/results/aws.32C.json",
+              "totalRuntime": 53.766,
+              "queriesCompleted": 22,
+              "queriesTotal": 22,
+              "perQuery": {
+                "q1": 7.744,
+                "q2": 0.275,
+                "q3": 2.861,
+                "q4": 0.495,
+                "q5": 3.43,
+                "q6": 0.162,
+                "q7": 1.471,
+                "q8": 2.517,
+                "q9": 9.155,
+                "q10": 1.827,
+                "q11": 0.504,
+                "q12": 0.501,
+                "q13": 4.899,
+                "q14": 0.409,
+                "q15": 0.668,
+                "q16": 1.009,
+                "q17": 1.473,
+                "q18": 7.511,
+                "q19": 1.688,
+                "q20": 0.735,
+                "q21": 3.583,
+                "q22": 0.849
+              }
+            },
+            {
+              "id": "clickhouse",
+              "name": "ClickHouse",
+              "version": "25.8.1.8702",
+              "machine": "32C(aws)",
+              "clusterSize": 3,
+              "sourcePath": 
"benchmarks/tpch/sf1000/clickhouse/results/aws.32C.json",
+              "totalRuntime": 278.978,
+              "queriesCompleted": 13,
+              "queriesTotal": 22,
+              "perQuery": {
+                "q1": 35.98,
+                "q2": 11.053,
+                "q3": null,
+                "q4": 16.35,
+                "q5": null,
+                "q6": 12.058,
+                "q7": null,
+                "q8": null,
+                "q9": null,
+                "q10": null,
+                "q11": 5.619,
+                "q12": 14.954,
+                "q13": null,
+                "q14": 10.555,
+                "q15": null,
+                "q16": 3.171,
+                "q17": 77.529,
+                "q18": 50.024,
+                "q19": 27.343,
+                "q20": 9.16,
+                "q21": null,
+                "q22": 5.182
+              }
+            },
+            {
+              "id": "redshift",
+              "name": "Redshift",
+              "version": "1.0.163480",
+              "machine": "16XLarge(aws)",
+              "clusterSize": 2,
+              "sourcePath": 
"benchmarks/tpch/sf1000/redshift/results/aws.16XLarge.json",
+              "totalRuntime": 120.639,
+              "queriesCompleted": 22,
+              "queriesTotal": 22,
+              "perQuery": {
+                "q1": 9.471,
+                "q2": 2.06,
+                "q3": 5.5,
+                "q4": 4.3,
+                "q5": 3.689,
+                "q6": 0.324,
+                "q7": 3.8,
+                "q8": 3.175,
+                "q9": 12.441,
+                "q10": 5.55,
+                "q11": 0.908,
+                "q12": 1.526,
+                "q13": 13.056,
+                "q14": 1.704,
+                "q15": 3.017,
+                "q16": 2.686,
+                "q17": 3.112,
+                "q18": 15.102,
+                "q19": 4.742,
+                "q20": 3.943,
+                "q21": 16.363,
+                "q22": 4.17
+              }
+            },
+            {
+              "id": "snowflake",
+              "name": "Snowflake",
+              "version": "9.38.4",
+              "machine": "XLarge(aws)",
+              "clusterSize": 1,
+              "sourcePath": 
"benchmarks/tpch/sf1000/snowflake/results/aws.XLarge.json",
+              "totalRuntime": 102.493,
+              "queriesCompleted": 22,
+              "queriesTotal": 22,
+              "perQuery": {
+                "q1": 5.942,
+                "q2": 2.707,
+                "q3": 4.62,
+                "q4": 3.102,
+                "q5": 5.254,
+                "q6": 1.647,
+                "q7": 3.964,
+                "q8": 3.813,
+                "q9": 7.851,
+                "q10": 5.814,
+                "q11": 2.178,
+                "q12": 3.227,
+                "q13": 7.331,
+                "q14": 1.781,
+                "q15": 2.312,
+                "q16": 4.411,
+                "q17": 3.375,
+                "q18": 13.083,
+                "q19": 3.081,
+                "q20": 6.862,
+                "q21": 8.02,
+                "q22": 2.118
+              }
+            }
+          ]
+        },
+        {
+          "id": "tpcds",
+          "name": "TPC-DS",
+          "scale": "sf1000",
+          "queries": [
+            "query01",
+            "query02",
+            "query03",
+            "query04",
+            "query05",
+            "query06",
+            "query07",
+            "query08",
+            "query09",
+            "query10",
+            "query11",
+            "query12",
+            "query13",
+            "query14",
+            "query14_1",
+            "query15",
+            "query16",
+            "query17",
+            "query18",
+            "query19",
+            "query20",
+            "query21",
+            "query22",
+            "query23",
+            "query23_1",
+            "query24",
+            "query24_1",
+            "query25",
+            "query26",
+            "query27",
+            "query28",
+            "query29",
+            "query30",
+            "query31",
+            "query32",
+            "query33",
+            "query34",
+            "query35",
+            "query36",
+            "query37",
+            "query38",
+            "query39",
+            "query39_1",
+            "query40",
+            "query41",
+            "query42",
+            "query43",
+            "query44",
+            "query45",
+            "query46",
+            "query47",
+            "query48",
+            "query49",
+            "query50",
+            "query51",
+            "query52",
+            "query53",
+            "query54",
+            "query55",
+            "query56",
+            "query57",
+            "query58",
+            "query59",
+            "query60",
+            "query61",
+            "query62",
+            "query63",
+            "query64",
+            "query65",
+            "query66",
+            "query67",
+            "query68",
+            "query69",
+            "query70",
+            "query71",
+            "query72",
+            "query73",
+            "query74",
+            "query75",
+            "query76",
+            "query77",
+            "query78",
+            "query79",
+            "query80",
+            "query81",
+            "query82",
+            "query83",
+            "query84",
+            "query85",
+            "query86",
+            "query87",
+            "query88",
+            "query89",
+            "query90",
+            "query91",
+            "query92",
+            "query93",
+            "query94",
+            "query95",
+            "query96",
+            "query97",
+            "query98",
+            "query99"
+          ],
+          "products": [
+            {
+              "id": "doris",
+              "name": "Apache Doris",
+              "version": "4.1.0",
+              "machine": "32C(AWS.m8i.8xlarge)",
+              "clusterSize": 3,
+              "sourcePath": 
"benchmarks/tpcds/sf1000/doris/results/aws.32C.json",
+              "totalRuntime": 173.84,
+              "queriesCompleted": 103,
+              "queriesTotal": 103,
+              "perQuery": {
+                "query01": 0.54,
+                "query02": 0.658,
+                "query03": 0.171,
+                "query04": 7.144,
+                "query05": 0.747,
+                "query06": 0.492,
+                "query07": 0.339,
+                "query08": 0.41,
+                "query09": 4.098,
+                "query10": 0.318,
+                "query11": 4.762,
+                "query12": 0.157,
+                "query13": 0.448,
+                "query14": 6.239,
+                "query14_1": 5.773,
+                "query15": 0.285,
+                "query16": 0.245,
+                "query17": 1.619,
+                "query18": 0.734,
+                "query19": 0.29,
+                "query20": 0.162,
+                "query21": 0.121,
+                "query22": 0.784,
+                "query23": 11.874,
+                "query23_1": 11.952,
+                "query24": 3.469,
+                "query24_1": 3.462,
+                "query25": 0.965,
+                "query26": 0.176,
+                "query27": 0.339,
+                "query28": 3.488,
+                "query29": 0.831,
+                "query30": 0.247,
+                "query31": 1.555,
+                "query32": 0.115,
+                "query33": 0.358,
+                "query34": 0.315,
+                "query35": 0.925,
+                "query36": 0.338,
+                "query37": 0.1,
+                "query38": 6.081,
+                "query39": 0.263,
+                "query39_1": 0.217,
+                "query40": 0.148,
+                "query41": 0.115,
+                "query42": 0.107,
+                "query43": 0.348,
+                "query44": 1.026,
+                "query45": 0.284,
+                "query46": 0.482,
+                "query47": 2.19,
+                "query48": 0.304,
+                "query49": 0.666,
+                "query50": 0.367,
+                "query51": 3.737,
+                "query52": 0.104,
+                "query53": 0.255,
+                "query54": 0.315,
+                "query55": 0.138,
+                "query56": 0.376,
+                "query57": 1.301,
+                "query58": 0.356,
+                "query59": 1.7,
+                "query60": 0.368,
+                "query61": 0.298,
+                "query62": 0.471,
+                "query63": 0.237,
+                "query64": 2.8,
+                "query65": 3.188,
+                "query66": 0.393,
+                "query67": 21.909,
+                "query68": 0.278,
+                "query69": 0.956,
+                "query70": 2.202,
+                "query71": 0.983,
+                "query72": 2.41,
+                "query73": 0.15,
+                "query74": 3.935,
+                "query75": 3.168,
+                "query76": 0.953,
+                "query77": 0.287,
+                "query78": 9.614,
+                "query79": 1.646,
+                "query80": 0.64,
+                "query81": 0.374,
+                "query82": 0.236,
+                "query83": 0.31,
+                "query84": 0.183,
+                "query85": 0.812,
+                "query86": 0.697,
+                "query87": 6.302,
+                "query88": 3.261,
+                "query89": 0.425,
+                "query90": 0.132,
+                "query91": 0.206,
+                "query92": 0.07,
+                "query93": 1.049,
+                "query94": 0.188,
+                "query95": 0.246,
+                "query96": 0.353,
+                "query97": 2.791,
+                "query98": 0.542,
+                "query99": 0.852
+              }
+            },
+            {
+              "id": "clickhouse",
+              "name": "ClickHouse",
+              "version": "25.8.1.8909",
+              "machine": "32C(aws)",
+              "clusterSize": 3,
+              "sourcePath": 
"benchmarks/tpcds/sf1000/clickhouse/results/aws.32C.json",
+              "totalRuntime": 1913.903,
+              "queriesCompleted": 70,
+              "queriesTotal": 103,
+              "perQuery": {
+                "query01": 3.588,
+                "query02": 15.8,
+                "query03": null,
+                "query04": null,
+                "query05": 30.833,
+                "query06": null,
+                "query07": 11.171,
+                "query08": 96.482,
+                "query09": 22.78,
+                "query10": null,
+                "query11": null,
+                "query12": 2.036,
+                "query13": 50.597,
+                "query14": null,
+                "query14_1": null,
+                "query15": 37.795,
+                "query16": null,
+                "query17": null,
+                "query18": null,
+                "query19": null,
+                "query20": 3.667,
+                "query21": 2.652,
+                "query22": 2.393,
+                "query23": 115.795,
+                "query23_1": 103.462,
+                "query24": 45.273,
+                "query24_1": 34.561,
+                "query25": null,
+                "query26": 5.051,
+                "query27": 10.925,
+                "query28": 21.889,
+                "query29": null,
+                "query30": null,
+                "query31": 22.263,
+                "query32": 1.93,
+                "query33": 7.11,
+                "query34": 8.148,
+                "query35": null,
+                "query36": 7.949,
+                "query37": 2.874,
+                "query38": 219.46,
+                "query39": 5.681,
+                "query39_1": 5.581,
+                "query40": 12.631,
+                "query41": 0.148,
+                "query42": null,
+                "query43": null,
+                "query44": 7.575,
+                "query45": 21.249,
+                "query46": 12.581,
+                "query47": null,
+                "query48": 38.676,
+                "query49": null,
+                "query50": 31.223,
+                "query51": 17.045,
+                "query52": null,
+                "query53": 10.587,
+                "query54": 37.603,
+                "query55": null,
+                "query56": 7.051,
+                "query57": null,
+                "query58": null,
+                "query59": 40.066,
+                "query60": 7.403,
+                "query61": 15.461,
+                "query62": 7.831,
+                "query63": 11.724,
+                "query64": null,
+                "query65": 22.807,
+                "query66": null,
+                "query67": null,
+                "query68": 13.766,
+                "query69": null,
+                "query70": 15.993,
+                "query71": 7.327,
+                "query72": null,
+                "query73": 7.586,
+                "query74": null,
+                "query75": null,
+                "query76": 4.984,
+                "query77": 8.473,
+                "query78": 0.199,
+                "query79": 21.412,
+                "query80": 41.418,
+                "query81": null,
+                "query82": 6.274,
+                "query83": 1.741,
+                "query84": 2.523,
+                "query85": 5.967,
+                "query86": 1.487,
+                "query87": 221.924,
+                "query88": 44.311,
+                "query89": 16.301,
+                "query90": 2.589,
+                "query91": 1.166,
+                "query92": 1.47,
+                "query93": 140.244,
+                "query94": null,
+                "query95": null,
+                "query96": 5.169,
+                "query97": 120.58,
+                "query98": 7.779,
+                "query99": 13.813
+              }
+            },
+            {
+              "id": "redshift",
+              "name": "Redshift",
+              "version": "1.0.162991",
+              "machine": "16XLarge(aws)",
+              "clusterSize": 2,
+              "sourcePath": 
"benchmarks/tpcds/sf1000/redshift/results/aws.16XLarge.json",
+              "totalRuntime": 395.495,
+              "queriesCompleted": 103,
+              "queriesTotal": 103,
+              "perQuery": {
+                "query01": 2.788,
+                "query02": 3.305,
+                "query03": 0.701,
+                "query04": 22.186,
+                "query05": 1.043,
+                "query06": 0.388,
+                "query07": 0.615,
+                "query08": 0.53,
+                "query09": 3.715,
+                "query10": 0.795,
+                "query11": 23.508,
+                "query12": 0.369,
+                "query13": 0.795,
+                "query14": 13.389,
+                "query14_1": 12.756,
+                "query15": 1.544,
+                "query16": 1.429,
+                "query17": 0.66,
+                "query18": 0.904,
+                "query19": 0.384,
+                "query20": 0.295,
+                "query21": 0.25,
+                "query22": 4.495,
+                "query23": 27.114,
+                "query23_1": 27.049,
+                "query24": 4.804,
+                "query24_1": 4.938,
+                "query25": 0.769,
+                "query26": 0.509,
+                "query27": 0.674,
+                "query28": 4.929,
+                "query29": 0.783,
+                "query30": 2.657,
+                "query31": 4.512,
+                "query32": 0.36,
+                "query33": 1.002,
+                "query34": 0.913,
+                "query35": 2.21,
+                "query36": 0.659,
+                "query37": 0.322,
+                "query38": 7.7,
+                "query39": 0.541,
+                "query39_1": 0.509,
+                "query40": 0.319,
+                "query41": 0.335,
+                "query42": 0.285,
+                "query43": 1.268,
+                "query44": 1.41,
+                "query45": 2.387,
+                "query46": 2.012,
+                "query47": 15.129,
+                "query48": 0.74,
+                "query49": 0.699,
+                "query50": 1.567,
+                "query51": 3.653,
+                "query52": 0.274,
+                "query53": 0.584,
+                "query54": 0.515,
+                "query55": 0.268,
+                "query56": 0.888,
+                "query57": 10.113,
+                "query58": 0.566,
+                "query59": 6.29,
+                "query60": 0.918,
+                "query61": 0.591,
+                "query62": 1.183,
+                "query63": 0.529,
+                "query64": 5.672,
+                "query65": 5.613,
+                "query66": 0.961,
+                "query67": 43.631,
+                "query68": 0.614,
+                "query69": 5.052,
+                "query70": 2.103,
+                "query71": 2.35,
+                "query72": 3.298,
+                "query73": 0.481,
+                "query74": 12.343,
+                "query75": 5.562,
+                "query76": 1.626,
+                "query77": 0.668,
+                "query78": 15.873,
+                "query79": 4.764,
+                "query80": 0.759,
+                "query81": 3.366,
+                "query82": 0.59,
+                "query83": 0.488,
+                "query84": 0.369,
+                "query85": 0.879,
+                "query86": 0.539,
+                "query87": 10.004,
+                "query88": 8.761,
+                "query89": 0.814,
+                "query90": 0.767,
+                "query91": 0.35,
+                "query92": 0.354,
+                "query93": 1.393,
+                "query94": 2.226,
+                "query95": 0.737,
+                "query96": 1.226,
+                "query97": 5.773,
+                "query98": 1.322,
+                "query99": 1.846
+              }
+            },
+            {
+              "id": "snowflake",
+              "name": "Snowflake",
+              "version": "9.37.1",
+              "machine": "XLarge(aws)",
+              "clusterSize": 1,
+              "sourcePath": 
"benchmarks/tpcds/sf1000/snowflake/results/aws.XLarge.json",
+              "totalRuntime": 464.562,
+              "queriesCompleted": 103,
+              "queriesTotal": 103,
+              "perQuery": {
+                "query01": 1.834,
+                "query02": 2.889,
+                "query03": 1.716,
+                "query04": 34.019,
+                "query05": 3.802,
+                "query06": 2.381,
+                "query07": 3.226,
+                "query08": 2.071,
+                "query09": 4.531,
+                "query10": 3.554,
+                "query11": 22.791,
+                "query12": 2.215,
+                "query13": 3.13,
+                "query14": 8.642,
+                "query14_1": 7.874,
+                "query15": 2.457,
+                "query16": 2.552,
+                "query17": 5.535,
+                "query18": 4.008,
+                "query19": 2.429,
+                "query20": 1.496,
+                "query21": 2.414,
+                "query22": 3.478,
+                "query23": 14.167,
+                "query23_1": 14.618,
+                "query24": 4.597,
+                "query24_1": 4.47,
+                "query25": 3.697,
+                "query26": 1.978,
+                "query27": 2.65,
+                "query28": 5.861,
+                "query29": 4.535,
+                "query30": 1.072,
+                "query31": 3.678,
+                "query32": 1.511,
+                "query33": 2.687,
+                "query34": 4.356,
+                "query35": 4.974,
+                "query36": 2.051,
+                "query37": 1.92,
+                "query38": 7.22,
+                "query39": 5.1,
+                "query39_1": 2.67,
+                "query40": 2.595,
+                "query41": 1.328,
+                "query42": 1.341,
+                "query43": 1.738,
+                "query44": 3.306,
+                "query45": 2.768,
+                "query46": 2.849,
+                "query47": 5.182,
+                "query48": 3.155,
+                "query49": 3.219,
+                "query50": 4.591,
+                "query51": 3.97,
+                "query52": 1.354,
+                "query53": 1.888,
+                "query54": 2.279,
+                "query55": 1.651,
+                "query56": 2.342,
+                "query57": 3.152,
+                "query58": 1.984,
+                "query59": 3.137,
+                "query60": 2.882,
+                "query61": 2.795,
+                "query62": 2.316,
+                "query63": 1.846,
+                "query64": 9.575,
+                "query65": 3.718,
+                "query66": 3.758,
+                "query67": 7.539,
+                "query68": 2.462,
+                "query69": 3.01,
+                "query70": 2.448,
+                "query71": 24.39,
+                "query72": 1.082,
+                "query73": 1.58,
+                "query74": 13.536,
+                "query75": 11.545,
+                "query76": 3.003,
+                "query77": 2.719,
+                "query78": 12.884,
+                "query79": 4.291,
+                "query80": 4.495,
+                "query81": 2.319,
+                "query82": 1.902,
+                "query83": 2.721,
+                "query84": 1.783,
+                "query85": 4.48,
+                "query86": 2.262,
+                "query87": 10.484,
+                "query88": 3.412,
+                "query89": 2.954,
+                "query90": 1.84,
+                "query91": 1.72,
+                "query92": 1.546,
+                "query93": 4.116,
+                "query94": 2.625,
+                "query95": 3.152,
+                "query96": 2.722,
+                "query97": 5.426,
+                "query98": 7.484,
+                "query99": 3.055
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "id": "iceberg",
+      "label": "Iceberg Table Format",
+      "benchmarks": [
+        {
+          "id": "ssb",
+          "name": "SSB",
+          "scale": "sf1000",
+          "queries": [
+            "q1.1",
+            "q1.2",
+            "q1.3",
+            "q2.1",
+            "q2.2",
+            "q2.3",
+            "q3.1",
+            "q3.2",
+            "q3.3",
+            "q3.4",
+            "q4.1",
+            "q4.2",
+            "q4.3"
+          ],
+          "products": [
+            {
+              "id": "doris",
+              "name": "Apache Doris",
+              "version": "4.1.0",
+              "machine": "32C(AWS.m8i.8xlarge)",
+              "clusterSize": 3,
+              "sourcePath": 
"benchmarks/ssb/sf1000/doris_iceberg_rest_s3_parquet/results/aws.32C.json",
+              "totalRuntime": 58.591,
+              "queriesCompleted": 13,
+              "queriesTotal": 13,
+              "perQuery": {
+                "q1.1": 2.547,
+                "q1.2": 1.224,
+                "q1.3": 1.134,
+                "q2.1": 7.299,
+                "q2.2": 6.747,
+                "q2.3": 6.828,
+                "q3.1": 4.375,
+                "q3.2": 3.363,
+                "q3.3": 3.103,
+                "q3.4": 1.178,
+                "q4.1": 8.456,
+                "q4.2": 5.524,
+                "q4.3": 6.813
+              }
+            },
+            {
+              "id": "trino",
+              "name": "Trino",
+              "version": "479",
+              "machine": "32C(AWS.m8i.8xlarge)",
+              "clusterSize": 3,
+              "sourcePath": 
"benchmarks/ssb/sf1000/trino_iceberg_rest_s3_parquet/results/aws.32C.json",
+              "totalRuntime": 159.213,
+              "queriesCompleted": 13,
+              "queriesTotal": 13,
+              "perQuery": {
+                "q1.1": 5.206,
+                "q1.2": 6.52,
+                "q1.3": 6.397,
+                "q2.1": 15.636,
+                "q2.2": 13.394,
+                "q2.3": 12.972,
+                "q3.1": 16.832,
+                "q3.2": 11.432,
+                "q3.3": 11.101,
+                "q3.4": 7.688,
+                "q4.1": 22.958,
+                "q4.2": 16.909,
+                "q4.3": 12.168
+              }
+            }
+          ]
+        },
+        {
+          "id": "tpcds",
+          "name": "TPC-DS",
+          "scale": "sf1000",
+          "queries": [
+            "query01",
+            "query02",
+            "query03",
+            "query04",
+            "query05",
+            "query06",
+            "query07",
+            "query08",
+            "query09",
+            "query10",
+            "query11",
+            "query12",
+            "query13",
+            "query14",
+            "query14_1",
+            "query15",
+            "query16",
+            "query17",
+            "query18",
+            "query19",
+            "query20",
+            "query21",
+            "query22",
+            "query23",
+            "query23_1",
+            "query24",
+            "query24_1",
+            "query25",
+            "query26",
+            "query27",
+            "query28",
+            "query29",
+            "query30",
+            "query31",
+            "query32",
+            "query33",
+            "query34",
+            "query35",
+            "query36",
+            "query37",
+            "query38",
+            "query39",
+            "query39_1",
+            "query40",
+            "query41",
+            "query42",
+            "query43",
+            "query44",
+            "query45",
+            "query46",
+            "query47",
+            "query48",
+            "query49",
+            "query50",
+            "query51",
+            "query52",
+            "query53",
+            "query54",
+            "query55",
+            "query56",
+            "query57",
+            "query58",
+            "query59",
+            "query60",
+            "query61",
+            "query62",
+            "query63",
+            "query64",
+            "query65",
+            "query66",
+            "query67",
+            "query68",
+            "query69",
+            "query70",
+            "query71",
+            "query72",
+            "query73",
+            "query74",
+            "query75",
+            "query76",
+            "query77",
+            "query78",
+            "query79",
+            "query80",
+            "query81",
+            "query82",
+            "query83",
+            "query84",
+            "query85",
+            "query86",
+            "query87",
+            "query88",
+            "query89",
+            "query90",
+            "query91",
+            "query92",
+            "query93",
+            "query94",
+            "query95",
+            "query96",
+            "query97",
+            "query98",
+            "query99"
+          ],
+          "products": [
+            {
+              "id": "doris",
+              "name": "Apache Doris",
+              "version": "4.1.0",
+              "machine": "32C(AWS.m8i.8xlarge)",
+              "clusterSize": 3,
+              "sourcePath": 
"benchmarks/tpcds/sf1000/doris_iceberg_rest_s3_parquet/results/aws.32C.json",
+              "totalRuntime": 823.896,
+              "queriesCompleted": 103,
+              "queriesTotal": 103,
+              "perQuery": {
+                "query01": 0.755,
+                "query02": 3.859,
+                "query03": 1.087,
+                "query04": 116.99,
+                "query05": 3.725,
+                "query06": 2.412,
+                "query07": 2.814,
+                "query08": 1.157,
+                "query09": 12.154,
+                "query10": 2.699,
+                "query11": 202.115,
+                "query12": 0.362,
+                "query13": 4.68,
+                "query14": 8.634,
+                "query14_1": 9.942,
+                "query15": 2.48,
+                "query16": 1.402,
+                "query17": 6.427,
+                "query18": 3.566,
+                "query19": 1.033,
+                "query20": 0.478,
+                "query21": 0.725,
+                "query22": 2.033,
+                "query23": 19.787,
+                "query23_1": 19.604,
+                "query24": 2.812,
+                "query24_1": 2.861,
+                "query25": 5.136,
+                "query26": 2.376,
+                "query27": 4.164,
+                "query28": 13.992,
+                "query29": 7.553,
+                "query30": 0.495,
+                "query31": 1.829,
+                "query32": 0.423,
+                "query33": 2.29,
+                "query34": 2.804,
+                "query35": 1.703,
+                "query36": 1.549,
+                "query37": 0.842,
+                "query38": 9.081,
+                "query39": 1.119,
+                "query39_1": 0.823,
+                "query40": 0.982,
+                "query41": 0.164,
+                "query42": 0.733,
+                "query43": 1.811,
+                "query44": 5.479,
+                "query45": 2.071,
+                "query46": 3.683,
+                "query47": 3.178,
+                "query48": 2.696,
+                "query49": 16.43,
+                "query50": 3.719,
+                "query51": 4.716,
+                "query52": 0.813,
+                "query53": 1.295,
+                "query54": 4.406,
+                "query55": 0.683,
+                "query56": 2.617,
+                "query57": 1.798,
+                "query58": 1.446,
+                "query59": 6.729,
+                "query60": 2.149,
+                "query61": 9.615,
+                "query62": 0.869,
+                "query63": 1.198,
+                "query64": 18.081,
+                "query65": 5.818,
+                "query66": 2.358,
+                "query67": 35.839,
+                "query68": 5.25,
+                "query69": 1.786,
+                "query70": 3.733,
+                "query71": 3.429,
+                "query72": 11.946,
+                "query73": 4.262,
+                "query74": 65.353,
+                "query75": 7.533,
+                "query76": 3.2,
+                "query77": 2.894,
+                "query78": 18.062,
+                "query79": 5.616,
+                "query80": 5.059,
+                "query81": 0.595,
+                "query82": 0.998,
+                "query83": 0.929,
+                "query84": 0.366,
+                "query85": 1.623,
+                "query86": 0.838,
+                "query87": 10.594,
+                "query88": 11.401,
+                "query89": 1.507,
+                "query90": 2.43,
+                "query91": 0.396,
+                "query92": 0.352,
+                "query93": 5.031,
+                "query94": 0.888,
+                "query95": 1.312,
+                "query96": 1.562,
+                "query97": 6.361,
+                "query98": 2.682,
+                "query99": 1.76
+              }
+            },
+            {
+              "id": "trino",
+              "name": "Trino",
+              "version": "479",
+              "machine": "32C(AWS.m8i.8xlarge)",
+              "clusterSize": 3,
+              "sourcePath": 
"benchmarks/tpcds/sf1000/trino_iceberg_rest_s3_parquet/results/aws.32C.json",
+              "totalRuntime": 2366.332,
+              "queriesCompleted": 103,
+              "queriesTotal": 103,
+              "perQuery": {
+                "query01": 3.807,
+                "query02": 13.557,
+                "query03": 4.154,
+                "query04": 191.955,
+                "query05": 12.684,
+                "query06": 5.177,
+                "query07": 8.308,
+                "query08": 5.013,
+                "query09": 30.093,
+                "query10": 6.64,
+                "query11": 118.555,
+                "query12": 2.868,
+                "query13": 29.608,
+                "query14": 85.887,
+                "query14_1": 57.319,
+                "query15": 4.405,
+                "query16": 19.309,
+                "query17": 12.828,
+                "query18": 8.411,
+                "query19": 5.55,
+                "query20": 3.097,
+                "query21": 4.586,
+                "query22": 8.707,
+                "query23": 241.021,
+                "query23_1": 239.289,
+                "query24": 18.576,
+                "query24_1": 18.95,
+                "query25": 9.164,
+                "query26": 6.069,
+                "query27": 7.023,
+                "query28": 19.518,
+                "query29": 17.343,
+                "query30": 3.53,
+                "query31": 14.882,
+                "query32": 4.209,
+                "query33": 8.202,
+                "query34": 8.025,
+                "query35": 7.955,
+                "query36": 6.658,
+                "query37": 6.214,
+                "query38": 32.814,
+                "query39": 9.699,
+                "query39_1": 8.378,
+                "query40": 3.667,
+                "query41": 1.325,
+                "query42": 3.521,
+                "query43": 5.386,
+                "query44": 11.819,
+                "query45": 3.806,
+                "query46": 11.821,
+                "query47": 39.339,
+                "query48": 18.842,
+                "query49": 16.682,
+                "query50": 27.159,
+                "query51": 12.547,
+                "query52": 3.632,
+                "query53": 4.624,
+                "query54": 25.551,
+                "query55": 3.836,
+                "query56": 7.886,
+                "query57": 21.524,
+                "query58": 6.499,
+                "query59": 42.93,
+                "query60": 8.449,
+                "query61": 11.051,
+                "query62": 6.503,
+                "query63": 4.74,
+                "query64": 27.559,
+                "query65": 20.174,
+                "query66": 8.096,
+                "query67": 61.155,
+                "query68": 14.52,
+                "query69": 5.642,
+                "query70": 17.216,
+                "query71": 8.43,
+                "query72": 104.087,
+                "query73": 8.033,
+                "query74": 83.114,
+                "query75": 29.998,
+                "query76": 10.296,
+                "query77": 9.473,
+                "query78": 61.117,
+                "query79": 17.879,
+                "query80": 13.131,
+                "query81": 4.222,
+                "query82": 10.519,
+                "query83": 4.245,
+                "query84": 2.974,
+                "query85": 7.624,
+                "query86": 3.932,
+                "query87": 34.138,
+                "query88": 27.75,
+                "query89": 5.227,
+                "query90": 3.804,
+                "query91": 2.835,
+                "query92": 2.818,
+                "query93": 27.401,
+                "query94": 9.962,
+                "query95": 42.328,
+                "query96": 5.024,
+                "query97": 24.588,
+                "query98": 3.569,
+                "query99": 10.276
+              }
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/src/pages/why-doris/benchmarks/index.tsx 
b/src/pages/why-doris/benchmarks/index.tsx
new file mode 100644
index 00000000000..5907927c3bb
--- /dev/null
+++ b/src/pages/why-doris/benchmarks/index.tsx
@@ -0,0 +1,6 @@
+import React, { JSX } from 'react';
+import BenchmarkNext from '@site/src/components/why-doris-next/BenchmarkNext';
+
+export default function BenchmarksPage(): JSX.Element {
+    return <BenchmarkNext />;
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to