【问题标题】:Nanoc long compile timeNanoc 编译时间长
【发布时间】:2013-01-22 10:52:38
【问题描述】:

我正在使用nanoc 为我的项目生成文档。我已经创建了几个文件(〜50)和布局,但目前我正在处理一个文件。奇怪的是,它在不到一秒的时间内编译了这个文件,而不是处理需要超过 20 秒的东西!

Loading site data…
Compiling site…
      update  [0.71s]  output/docs/js/getData/index.html

Site compiled in 22.96s.

当我在之后中止进程时:

      update  [0.71s]  output/docs/js/getData/index.html

使用 CTRL+C 和 nanoc view 我的文件编译得很好。你知道如何加快这个过程吗? nanoc 20 秒在做什么?

【问题讨论】:

    标签: ruby erb nanoc


    【解决方案1】:

    默认情况下,nanoc 仅显示创建、更新或删除的文件。重新编译但结果相同的文件将不会显示。如果您将--verbose 传递给nanoc compile,您将看到哪些文件已编译但相同。

    因此,nanoc 似乎什么都不做的那 20 秒很可能是 nanoc 忙于重新编译但发现编译的文件相同的 20 秒,因此它们没有显示。

    项目将被重新编译,除非 nanoc 可以确定它们将保持相同。有时,nanoc 无法确定重新编译时文件是否相同,因此在这种情况下,无论如何都会重新编译该项目。

    23 秒来编译一个有 50 页的网站似乎很慢。它有助于选择快速过滤器(例如,RDiscount 用于 Markdown,pygments.rb 用于语法着色)。如果可以的话,通过 Ruby 分析器(例如,perftools.rb)运行 nanoc 以找出缓慢的来源。

    【讨论】:

    • 你是对的。我通过了 --verbose ,我知道问题出在哪里。在编译后显示的表格中,我看到 colorize_syntax 的总时间为 22.33 秒。我使用 pygmentize。哪个对 HTML 和 JS 片段着色更快?
    • Pygmentize 非常慢。直接替换是pygments.rb,速度要快很多(上面已经提到过)。看看pull request #100 for developer.github.com 以了解加速!不过,我个人使用 CodeRay,效果也很好。你能谈谈你现在得到的加速吗?
    • 我用coderay替换了pygmentize。 20 秒 vs. 不到 1 秒 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2014-11-25
    • 2022-11-14
    • 2021-09-09
    相关资源
    最近更新 更多