#!/usr/bin/env ruby require 'benchmark/ips' require 'haml' require 'faml' require 'slim' require 'escape_utils/html/haml' require_relative 'context' haml_code = File.read(File.join(__dir__, 'view.haml')) slim_code = File.read(File.join(__dir__, 'view.slim')) context = Context.new Haml::Engine.new(haml_code, ugly: true, escape_html: true).def_method(context, :haml) context.instance_eval %{ def faml; #{Faml::Engine.new(generator: Temple::Generators::RailsOutputBuffer).call(haml_code)}; end def slim; #{Slim::Engine.new(generator: Temple::Generators::RailsOutputBuffer).call(slim_code)}; end } Benchmark.ips do |x| x.report('Haml') { context.haml } x.report('Faml') { context.faml } x.report('Slim') { context.slim } x.compare! end