Pessoal, estava pesquisando sobre otmimizações que o compilador faz no quesito concatenação de strings e encontrei o seguinte artigo:https://www.baeldung.com/java-string-concatenation-invoke-dynamic
Resumidamente, ele aborda possíveis estratégias, apartir do Java 9, que podem ser passadas por parâmetro ao compilador, conforme segue trecho:
The default strategy is MH_INLINE_SIZE_EXACT . However, we can change this strategy using the -Djava.lang.invoke.stringConcat= system property.
Porém para mim não ficou claro em que situações eu deveria/poderia me preocupar (ou considerar utilizar outra estratégia de concatenação que não seja a default) com isso. Alguém poderia me esclarecer?
1 curtida
Assim como muita coisa (“quase tudo”?) em computação, a resposta é “depende”.
No artigo que você citou tem um link para alguns testes comparando as estratégias, e é interessante ver que dependendo do caso, uma estratégia pode ser melhor, pior, ou não fazer diferença significativa.
No fim, cada caso é um caso. Sua aplicação está com problemas de desempenho? Você testou e verificou que o gargalo pode estar em um trecho que faz muitas concatenações de strings? Então talvez mudar a estratégia de concatenação possa fazer sentido - mas tem que analisar o código (como/quais strings estão sendo concatenadas) para saber qual estratégia seria a mais adequada (e aí ler bem a documentação para entender como cada estratégia funciona, e testar novamente para saber se deu diferença).
2 curtidas