sed versus Perl substitution performance

Rubénerd is now generated with Hugo. The performance difference over Jekyll is stunning, though it does take more post-processing to get things the way I want. One task is replacing certain blocks of exported text from each post.

This is the sed command run over all 4000+ posts:

sed -i '' -e 's/something/else/g' ${post}

Note the empty string. BSD userland sed (FreeBSD, OS X, etc) requires this for inline replace. GNU sed in your Linux of choice does not.

Using time, I consistently get these numbers:

real	0m18.889s
user	0m8.388s
sys	0m10.470s

Not the end of the world, but still significant considering Hugo generates the entire site in only roughly double this time. So what could we do to improve this?

It's still my favourite language, so I tried a Perl substitution:

perl -pe "s/something/else/g $POST > ./TEMP

Perhaps unsurprisingly, a dynamic language writing to a temporary file didn't improve things:

real	0m47.647s
user	0m19.730s
sys	0m20.112s

Needless to say, I'm seriously considering learning Go as my next hobby project.


This is one of about 5000 posts on Rubénerd. View the home page for the latest, or related posts also tagged with:

If you liked this post, feel free to buy me a coffee, leave me a comment on Twitter, or email me at Thanks :).