├── .gitignore ├── Gemfile ├── README.md ├── script ├── bootstrap └── benchmark └── .travis.yml /.gitignore: -------------------------------------------------------------------------------- 1 | .bundle 2 | _site 3 | bin 4 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "jekyll", github: "jekyll/jekyll", branch: "#{ENV.fetch("TEST_BRANCH", "master")}" 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Profiling Jekyll 2 | ========= 3 | 4 | Profiling the build time of various types of sites. 5 | 6 | Specify a `TEST_BRANCH` in the `.travis.yml` file and you should be good to go. 7 | -------------------------------------------------------------------------------- /script/bootstrap: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if test -z "$TRAVIS" 4 | then 5 | EXTRA_ARGS="" 6 | else 7 | EXTRA_ARGS="--path vendor" 8 | fi 9 | 10 | set -x 11 | 12 | bundle install --jobs=3 --binstubs $EXTRA_ARGS 13 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | rvm: 3 | - 2.0 4 | - 2.1 5 | install: "travis_retry script/unbundle ; travis_retry script/bootstrap" 6 | script: script/benchmark 7 | notifications: 8 | irc: 9 | on_success: change 10 | on_failure: change 11 | channels: 12 | - irc.freenode.org#jekyll 13 | template: 14 | - '%{repository}#%{build_number} %{message} %{build_url}' 15 | email: 16 | on_success: never 17 | on_failure: change 18 | -------------------------------------------------------------------------------- /script/benchmark: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | : ${TEST_DIR:="tmp"} 4 | : ${JEKYLL:="bin/jekyll"} 5 | 6 | run_profile() { 7 | bundle exec time $JEKYLL build -s $1 -d $1/_site 8 | } 9 | 10 | echo 1. First, a super basic Jekyll site. Start simple. 11 | 12 | run_profile simple-site 13 | 14 | echo 2. Now, the site Jekyll ships with. 15 | 16 | rm -rf $TEST_DIR 17 | $JEKYLL new $TEST_DIR 18 | run_profile $TEST_DIR 19 | 20 | echo 3. Now, jekyllrb.com 21 | 22 | rm -rf $TEST_DIR 23 | git clone --quiet git://github.com/jekyll/jekyll.git $TEST_DIR && \ 24 | pushd $TEST_DIR && \ 25 | git checkout gh-pages && \ 26 | popd 27 | run_profile $TEST_DIR 28 | 29 | echo 4. Next, a corporate-sized blog. 30 | 31 | echo 5. Last, the behemoth. 32 | --------------------------------------------------------------------------------