Fala Robson,
a 1a. lib gráfica desenvolvida para C e que tratava somente 8 cores (preto+branco+6) foi a curses, que se não me falha a memória é posterior ao bourne shell, que é a base de todos os outros, que com ele mantem compatibilidade, como é o caso do ksh, bash e outros. Com isso quero dizer que esses interpretadores em seu nascimento, não tinham suporte a cores e por isso creio que instruções como tput setaf e setab, além de outras que usam sequências de <ESC> para colorir, sejam um "puxadinho" sem comprometimento com performance.
Se estou correto (e devo estar) o shell não é a linguagem ideal para fazer o que vc deseja. Alias, no meu entender, um bom benchmark deve sempre ser desenvolvido em uma linguagem compilada, onde vc tem menos interferências externas.