Usar AnsiStrings em todo lugar vai derrubar a performance, sem dúvida.
Cada função chamada pra processar uma string vai causar duas ou mais
conversões de ansi->unicode e vice versa. Adicionar a unit AnsiStrings
(se me lembro bem) no uses vai diminuir um pouco isso, pois ela possui
as versões antigas das funções de manipulação de string. Conversões
ainda vão acontecer ao utilizar classes e funções fora dessa unit.
Setar {$STRINGCHECKS OFF} no D2009 e D2010 vai ajudar um pouco também
(isso não existe mais no XE, e é ignorado).
A alternativa que recomendaria é encarar o unicode e utilizar strings
mesmo. Primeiro para facilitar o tratamento de arquivos em
unicode/outras codepages, tanto comentários/strings contendo
caracteres especiais quando indentificadores em unicode (é possível
ter uma variável chamada 'ação" desde o D2005, se me lembro bem). Não
que sejam uma boa idéia, mas acho importante para paridade de
linguagem.
E segundo, para ajudar a definir como o llvm-pascal vai lidar com
unicode, que pessoalmente acho um recurso extremamente importante.
--
Leonel