blog

jekyll ではじめる Static Web Site シリーズJekyllの関連記事表示とGSLを使った処理時間の短縮

    • Ryuichi Nonaka
    この記事は書かれてから1年以上経過しており、内容が古い場合があります。

    はじめに

    Jekyllは関連記事も表示できますが、そのまま使うだけだと処理に時間がかかります。処理時間を高速化するためにGSL(GNU Scientific Library)を入れて処理時間を計測してみました。

    関連記事を表示する

    Jekyllに関連記事用の設定を加え、有効化します。

    _config.yml

    lsi: true
    

    post.html

    テンプレート側はこんな感じ。

    {% for post in site.related_posts limit:5 %}
        <li><a href="{{ BASE_PATH }}{{post.url}}">{{ post.title }}</a></li>
    {% endfor %}
    

    タスクの処理速度を計測する

    jekyllの処理にどの程度かかっているのか計測してみます。Gruntを介してJekyllを処理しているのでtime-gruntというモジュールを使って計測しました。インストール方法はモジュールのページを参照。

    require('time-grunt')(grunt);で読み込んでしまえば勝手に実行されます。

    処理結果

    余計なものも含まれていますが3行目のjekyll:prev 13.1sが計測結果です。 20本程度でこの時間は「だめよ〜ダメダメ」さすがに遅すぎです。

    Execution Time (2014-10-02 05:06:44 UTC)
    sass:prev      2.9s  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 13%
    jekyll:prev   13.1s  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 58%
    notify:serve  301ms  ▇▇ 1%
    watch          6.1s  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 27%
    Total 22.5s
    

    GSLを入れて高速化

    GSLって何よって感じなんですがよく理解していません。

    GNU Scientific Library (GSL) は、ANSI Cで記述された科学技術計算関数のライブラリである。オープンソースであり、GNU General Public Licenseのもとで配布されている。

    GSLをインストール

    とりあえずインストールしましょう。ここでも便利なHomebrewを使います。

    $ brew install gsl
    

    gemの設定

    bundlerを使っているのでGemfileに追記します。

    source "https://rubygems.org"
    
    gem "sass"
    gem "bourbon"
    gem "neat" 
    gem "rb-gsl"
    gem "jekyll", "~> 2.4.0"
    

    bundlerでインストール

    すでに運用中の環境ならインストールコマンドだけでさっとインストール。

    $ bundle install
    

    再び計測

    jekyll:prev 4.7sなんと10秒弱も速くなりました。GSLすばらしいですね。

    Execution Time (2014-10-02 05:26:45 UTC)
    sass:prev      3.1s  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 23%
    jekyll:prev    4.7s  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 35%
    notify:serve  313ms  ▇▇▇▇ 2%
    watch          5.1s  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 38%
    Total 13.3s
    

    めでたしめでたし。

    参考サイト

    シリーズ

    1. Jekyll × Gruntでブログを作ってみた:環境構築編
    2. Jekyll × Gruntでブログを作ってみた:NodeモジュールとGruntタスク
    3. Jekyll × Gruntでブログを作ってみた:まずはJekyllだけ動かしてみる
    4. Jekyllの関連記事表示とGSLを使った処理時間の短縮
    5. jekyllでFontAwesomeアイコンを表示するLiquid Tagを作った
    6. jekyllのタグを投稿数で並び替えて表示する
    7. jekyllでタグ・カテゴリ・マンスリーアーカイブページを作る
    8. jekyllでプラグインを使った動的ページ生成

    コメント・フィードバック