#!/bin/sh num=100000 for arg in 'a' '\x80' '\u0100' '\U00010000' do for prefix in 'a' '\x80' '\u0100' '\U00010000' do fmt="'${prefix}%s' + 'a' * 1000" t="$(./python -m timeit -r 10 -n $num -s "f = ${fmt}" -- "f % '${arg}'" | sed -re 's/^.*: (.*) per loop.*/\1/')" printf '%10s %s\n' "$t" "(${fmt}) % '${arg}'" done done for arg in 'a' '\x80' '\u0100' '\U00010000' do for prefix in 'a' '\x80' '\u0100' '\U00010000' do fmt="'${prefix}{}' + 'a' * 1000" t="$(./python -m timeit -r 10 -n $num -s "f = ${fmt}" -- "f.format('${arg}')" | sed -re 's/^.*: (.*) per loop.*/\1/')" printf '%10s %s\n' "$t" "(${fmt}).format('${arg}')" done done