Pessoal, estou fazendo uma aplicação que usa manipulação pesada de strings, vários contains e starts with e comparação, alguém sabe me dizer como posso aumentar a eficiência dele(sem contar a complexidade que neste aspecto eu me viro :D)?
Além do que ele manipula strings grandes portando quanto mais eficiênte ele ficasse melhor
Hum… normalmente eu diria para você usar StringBuilder em vez de String se o caso for “montar” strings, mas o seu caso (em que você diz ter várias comparações) indica que você talvez precisasse de uma estrutura de dados adequada, como um TreeMap ou TreeSet (implementam as interfaces NavigableMap e NavigableSet, portanto é possível obter intervalos de dados “entre” dois limites, por exemplo, e percorrer esses intervalos para frente e para trás).
Dependendo da comparação, é necessário usar expressões regulares em vez de simples “contains” ou “startsWith”, mas expressões regulares também são mais pesadas.
Realmente não sei lhe dizer o que fazer; não há uma “bala mágica” que resolva tudo, sem saber exatamente qual o seu problema.
Não adianta comparar strings “mais rapidamente”; a JVM já faz o máximo possível comparando-as usando as instruções nativas adequadas do processador (deve converter em um REP CMPSW ou coisa parecida, no caso de Intel.)
O que você pode fazer é reduzir o número de comparações necessárias, melhorando suas estruturas de dados e algoritmos.