From f7de1e8fef9d130a11c7b027040203fa2ce5eb62 Mon Sep 17 00:00:00 2001 From: Marco Date: Mon, 11 Mar 2024 19:20:55 +0100 Subject: [PATCH 1/2] feat: add last update time at /benchmarks page, clse #176 --- scripts/download-benchmarks.js | 16 +++++++++++++--- src/pages/benchmarks.mdx | 6 +++++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/scripts/download-benchmarks.js b/scripts/download-benchmarks.js index 3cdab73a..0fbeb5cc 100644 --- a/scripts/download-benchmarks.js +++ b/scripts/download-benchmarks.js @@ -44,12 +44,14 @@ async function execute({ downloadUrl, outputFile }) { async function downloadBenchmarks(githubUrl) { const data = await getDataAsJSON(githubUrl) if (isValidBenchmark(data)) { - return buildBenchmarksJSON(data) + const date = await getBenchmarkDate(); + return buildBenchmarksJSON(data, date); } log.warn('Fetched file contains `N/A` data. Searching for previous revision') const commits = await getCommits() + let i = 0; for (let commit in commits) { const commitSha = commits[commit] log.debug(`Checking commit %s`, commitSha) @@ -59,13 +61,20 @@ async function downloadBenchmarks(githubUrl) { const data = await getBlob(benchmarlUrl) if (isValidBenchmark(data)) { - return buildBenchmarksJSON(data) + const date = await getBenchmarkDate(i); + return buildBenchmarksJSON(data, date); } + i++; } throw new Error('Unable to find a valid benchmark result') } +async function getBenchmarkDate(benchmarkCommitNumber=0) { + const commits = await getDataAsJSON(`${GITHUB_BASE_URL}/commits?path=benchmark-results.json&per_page=10`); + return commits[benchmarkCommitNumber] ? commits[benchmarkCommitNumber].commit.committer.date : 'Unknown'; +} + const getCommits = async () => { const commits = await getDataAsJSON(`${GITHUB_BASE_URL}/commits?path=benchmark-results.json&per_page=10`) return commits.map((commit) => commit.sha) @@ -87,13 +96,14 @@ const getBlob = async (blobUrl) => { return JSON.parse(decodedContent) } -function buildBenchmarksJSON(data) { +function buildBenchmarksJSON(data, date = 'Unknown') { const maxSpeed = data .filter(({ requests }) => !isNaN(requests)) .map(({ requests }) => parseInt(requests)) .reduce((max, req) => (req > max ? req : max), 0) const json = { + date, reference: maxSpeed, frameworks: arrayDefaultFrameworks.map((framework) => { const item = data.find(({ name }) => name == framework.tag) diff --git a/src/pages/benchmarks.mdx b/src/pages/benchmarks.mdx index d5048981..93a84ec2 100644 --- a/src/pages/benchmarks.mdx +++ b/src/pages/benchmarks.mdx @@ -16,13 +16,17 @@ export function BenchmarkSection() { )) } +export function BenchMarkDate() { + return benchmarksData.date === 'Unknown' ? 'Unknown' : (new Date(benchmarksData.date)).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }); +} + Leveraging our experience with Node.js performance, Fastify has been built from the ground up to be **as fast as possible**. All the code used for our benchmarks is [available on GitHub](https://github.com/fastify/benchmarks/). -Here's a brief summary on how Fastify overhead performed against the some other well known Node.js web frameworks: +Here's a brief summary on how Fastify overhead performed against the some other well known Node.js web frameworks (last updated on ): From a2aa65c07adc9707efef63a0e1beb3ad773cbae6 Mon Sep 17 00:00:00 2001 From: Marco Date: Tue, 12 Mar 2024 10:14:01 +0100 Subject: [PATCH 2/2] chore: fix linting --- scripts/download-benchmarks.js | 18 +++++++++--------- src/pages/benchmarks.mdx | 4 +++- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/scripts/download-benchmarks.js b/scripts/download-benchmarks.js index 0fbeb5cc..b59c04b2 100644 --- a/scripts/download-benchmarks.js +++ b/scripts/download-benchmarks.js @@ -44,14 +44,14 @@ async function execute({ downloadUrl, outputFile }) { async function downloadBenchmarks(githubUrl) { const data = await getDataAsJSON(githubUrl) if (isValidBenchmark(data)) { - const date = await getBenchmarkDate(); - return buildBenchmarksJSON(data, date); + const date = await getBenchmarkDate() + return buildBenchmarksJSON(data, date) } log.warn('Fetched file contains `N/A` data. Searching for previous revision') const commits = await getCommits() - let i = 0; + let i = 0 for (let commit in commits) { const commitSha = commits[commit] log.debug(`Checking commit %s`, commitSha) @@ -61,18 +61,18 @@ async function downloadBenchmarks(githubUrl) { const data = await getBlob(benchmarlUrl) if (isValidBenchmark(data)) { - const date = await getBenchmarkDate(i); - return buildBenchmarksJSON(data, date); + const date = await getBenchmarkDate(i) + return buildBenchmarksJSON(data, date) } - i++; + i++ } throw new Error('Unable to find a valid benchmark result') } -async function getBenchmarkDate(benchmarkCommitNumber=0) { - const commits = await getDataAsJSON(`${GITHUB_BASE_URL}/commits?path=benchmark-results.json&per_page=10`); - return commits[benchmarkCommitNumber] ? commits[benchmarkCommitNumber].commit.committer.date : 'Unknown'; +async function getBenchmarkDate(benchmarkCommitNumber = 0) { + const commits = await getDataAsJSON(`${GITHUB_BASE_URL}/commits?path=benchmark-results.json&per_page=10`) + return commits[benchmarkCommitNumber] ? commits[benchmarkCommitNumber].commit.committer.date : 'Unknown' } const getCommits = async () => { diff --git a/src/pages/benchmarks.mdx b/src/pages/benchmarks.mdx index 93a84ec2..90f83ffd 100644 --- a/src/pages/benchmarks.mdx +++ b/src/pages/benchmarks.mdx @@ -17,7 +17,9 @@ export function BenchmarkSection() { } export function BenchMarkDate() { - return benchmarksData.date === 'Unknown' ? 'Unknown' : (new Date(benchmarksData.date)).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }); + return benchmarksData.date === 'Unknown' + ? 'Unknown' + : new Date(benchmarksData.date).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }) }