A set of scripts to test markdown processing speeds in various site generators/frameworks

Overview

bench-framework-markdown

A set of scripts to test markdown processing speeds in various site generators/frameworks.

Installation

Install each framework, a script is provided:

./install.sh

Usage

The first argument to each script is the number of pages (samples are provided for 250, 500, 1000, 2000, and 4000)

./bench-astro.sh 250
./bench-eleventy.sh 250
./bench-gatsby.sh 250
./bench-hugo.sh 250
./bench-nextjs.sh 250
./bench-nextjs-file-routing.sh 250
./bench-remix.sh 250
./bench-remix-file-routing.sh 250

./bench-eleventy.sh 250
./bench-eleventy.sh 500
./bench-eleventy.sh 1000
./bench-eleventy.sh 2000
./bench-eleventy.sh 4000

Results

Full (most up-to-date) results published at https://www.zachleat.com/web/build-benchmark/

Comments
  • Update Remix Benchmark

    Update Remix Benchmark

    Remix is not a static site generator and shouldn't really be a part of this benchmark, but since it is I have updated it to use https://www.npmjs.com/package/remix-ssg. This is a package that replaces the remix compiler to support SSG.

    Locally this took the remix benchmark from 47.82s down to 1.08s.

    Compiler support for MDX in Remix is not something we wanted to add and is by no means optimized. Moving to runtime compilation (static HTML generation time in this case) as we recommend drastically speeds things up.

    opened by jacob-ebey 16
  • update astro to v1

    update astro to v1

    Like the title says, this bumps the Astro templates to v1.0.1 to get the latest and greatest speed improvements by @bholmesdev.

    I also updated the astro-with-mdx benchmark, but since this is a test of .md files and not .mdx files I don't think that benchmark is really testing anything, aka the two benchmarks are basically identical and you should be safe to remove one.

    opened by FredKSchott 5
  • Remix results

    Remix results

    It looks like your machine is not configured properly. Here's my test run on a MacBook Pro 16" 2019 2.4 GHz 8-core Intel Core i9 with 64GB RAM.

    EDIT Removed results since the benchmark scripts were broken. It actually never copies the posts to the folder, since the folder is previously deleted, cp complains about missing folder. With the actual posts copied, the build times were definitely longer.

    Like @jpcafe said on Twitter, this synthetic benchmark is not how Remix would handle markdown files. Those files should be treated as data and rendered on demand. Remix is not an SSG framework. Sure it supports MD routes, but mainly for convenience when you have a few markdown files. But if you have 4000, you'd keep those in a database, or in a lot of cases pull them from GitHub and render it on the fly. Either caching via Redis or using HTTP caching headers.

    Anyway, I think it was disingenuous (considering you maintain one of the other frameworks) to release a benchmark result that was such an outlier without reaching out to the Remix community first.

    opened by kiliman 4
  • Test Astro with MDX

    Test Astro with MDX

    This adds a test for Astro with the official MDX extension.

    Why? Because Astro recently deprecated the use of components/expressions/variables in Markdown files, which makes me wonder if it makes the comparison a little less than 1:1.

    See the deprecation notice.

    I’m not suggesting these tests will run faster, but I hope their notice and official MDX extension would be considered a realistic scenario for working with Markdown. At least, I think it would be helpful to know the impact this would have on any Astro user using components, expressions, or variables.

    As I may not be able to replicate your testing conditions, I’m offering this as a PR, but please know I won’t be offended if you decline it.

    opened by jonathantneal 3
  • Add SvelteKit

    Add SvelteKit

    Creates a bare-bones SvelteKit blog project (using mdsvex for Markdown processing, and the static adapter to build static files). Also adds the requisite .sh file for benchmarking. (Note: just copied an existing .sh file and modified slightly, but it seems to work.)

    PR looks much larger than it really is; most of those lines are the package-lock.json file.

    The SvelteKit site just has a homepage that lists all the posts with a link, and of course a page for each post. No extras at all.

    I suspect one could get quicker build times by using Vite for the markdown processing instead of mdsvex, but that's for another experiment, I suppose.

    opened by josh-collinsworth 1
  • added Lume

    added Lume

    Lume is not the most popular static site generator, so feel free to close this PR if you don't want to include it.

    Disclosure: I am the maintainer (one more reason to discard this PR).

    I thought it could be interesting to include it because it's on Deno, so it can compare Node vs Deno. It's one of the most popular SSG for Deno (at least the only one listed in the Jamstack's generators after filtering by "JavaScript (Deno)".

    PD: it's heavily inspired by Eleventy (I'm a fan) and Jekyll.

    opened by oscarotero 0
  • Add SvelteKit

    Add SvelteKit

    https://kit.svelte.dev

    Like Next/Nuxt/Remix, SvelteKit is more a framework that can generate static files than one built specifically for it, but it would still be interesting to see the comparison using MDSvex (Svelte's de facto markdown parser) and the static adapter.

    enhancement 
    opened by josh-collinsworth 0
  • Convert shell scripts to node js scripts

    Convert shell scripts to node js scripts

    Really interesting project.

    Maybe it would be interesting to also compare this across OS's like Mac vs Linux vs Windows. Especially for win the shell script would need to have a runnable equal on windows.

    For this to work IMO one of the easiest approaches would be to convert the .sh scripts into js (could also use something like zx for convenience).

    enhancement 
    opened by Snapstromegon 2
Owner
Zach Leatherman
bleep blorp the singularity is nigh
Zach Leatherman
A util for getting data and metadata for all markdown files in a given dir. Useful for building static site generators

extract-md-data A util for getting data and metadata for all markdown files in a given dir. Useful for building static site generators. Usage Given th

Claire Froelich 2 Jan 6, 2022
A Git-based CMS for Static Site Generators

staticjscms.github.io/static-cms A CMS for static site generators. Give users a simple way to edit and add content to any site built with a static sit

StaticJs CMS 147 Jan 2, 2023
Theme Redone is a custom WordPress theme starter/framework with its own Gutenberg blocks solution and a CLI that speeds up the block creation process.

Theme Redone The Framework for Developing Custom WordPress Themes with its own Gutenberg Blocks creation solution. Theme Redone is a custom WordPress

null 103 Dec 30, 2022
A collection of scripts to build offline documentation for your favourite frameworks/libraries. Simply search, copy/paste the commands and enjoy.

Offline-docs A collection of scripts to build offline documentation for your favourite frameworks/libraries. Simply search, copy/paste the commands an

Naveen Namani 37 Dec 24, 2022
An obsidian plugin for uploading local images embedded in markdown to remote store and export markdown for publishing to static site.

Obsidian Publish This plugin cloud upload all local images embedded in markdown to specified remote image store (support imgur only, currently) and ex

Addo.Zhang 7 Dec 13, 2022
4WEB is a collection & creation of codebase, frameworks, libraries and various resources dedicated to web development 📦🌐

?? Vous pouvez également contribuer à ajouter/créer votre propre collection dans ce référentiel ... Table des matières ?? Codebase ?? NPM packages ??

Raja Rakotonirina 5 Nov 14, 2022
Connect Web Integration illustrates the integration of Connect-Web in various JS frameworks and tooling

Connect Web Integration Connect Web Integration is a repository of example projects using Connect-Web with various JS frameworks and tooling. It provi

Buf 43 Dec 29, 2022
This project will be using various AI and Rule Engine algorithm to detect various attack against a company!

?? Introduction This project will be using various AI and Rule Engine algorithm to detect various attack against a website! ?? Mission After starting

Harish S.G 4 Apr 29, 2022
A Cypress plugin that generates test scripts from your interactions, a replacement Cypress Studio for Cypress v10 🖱 ⌨

DeploySentinel Cypress Recorder Plugin Create Cypress tests scripts within the Cypress test browser by simply interacting with your application, simil

DeploySentinel 13 Dec 15, 2022
Quickly create an interactive HTML mock-up by auto sourcing lorem ipsum/images generators, with minimal html markup, and no server side code

RoughDraft.js v0.1.5 Quickly mockup / prototype HTML pages with auto-generated content, without additional JavaScript or server side code. <section>

Nick Dreckshage 464 Dec 21, 2022
A simple site to generate useful resources for Gitpodification, including "open in gitpod" buttons and sample configuration scripts

Gitpodify A simple portal to generate "open in Gitpod" links Contributing There is a list of suggested repositories in app/routes/index.tsx. Feel free

Jacob Paris 4 Nov 7, 2022
A GitHub Action to enable Pages and extract various metadata about a site

A GitHub Action to enable Pages and extract various metadata about a site. It can also be used to configure various static site generators we support as starter workflows.

GitHub Actions 50 Jan 1, 2023
A plugin for the Obsidian markdown note application, adding functionality to render markdown documents with multiple columns of text.

Multi-Column Markdown Take your boring markdown document and add some columns to it! With Multi Column Markdown rather than limiting your document lay

Cameron Robinson 91 Jan 2, 2023
A markdown-it plugin that process images through the eleventy-img plugin. Can be used in any projects that uses markdown-it.

markdown-it-eleventy-img A markdown-it plugin that process images through the eleventy-img plugin. Can be used in any projects that use markdown-it. F

null 25 Dec 20, 2022
Markdown Transformer. Transform markdown files to different formats

Mdtx Inspired by generative programming and weed :). So I was learning Elm language at home usually in the evening and now I am missing all this gener

Aexol 13 Jan 2, 2023
Jester is a test-generation tool to create integration test code.

Code Generator for Integration Tests Introduction Welcome to Jester: An easy-to-use web application that helps you create and implement integration te

OSLabs Beta 54 Dec 12, 2022
Easily publish notes to the web This plugin integrates with obsius.site to publish markdown notes on the web.

Obsius Publish Easily publish notes to the web This plugin integrates with obsius.site to publish markdown notes on the web. Limitations The type of c

Jon Grythe Stødle 66 Dec 20, 2022
docsQL - Getting an overview over your Markdown file in your Jamstack site

docsQL Getting an overview of your Jamstack Markdown files. Demo Play with: https://peterbe.github.io/docsql/ You're supposed to run docsQL with your

Peter Bengtsson 19 Jan 3, 2023
This repository contains a basic example on how to set up and run test automation jobs with CircleCI and report results to Testmo.

CircleCI test automation example This repository contains a basic example on how to set up and run test automation jobs with CircleCI and report resul

Testmo 2 Dec 23, 2021