Tuesday, May 30, 2006

Dicas de Performance Java 5

Aqui vai algumas dicas para performance, mais especificamente no Java 5:

Fazer comparação ignorando maiúsculas e minúsculas...
ao invés de Code:
s1.toUpperCase().equals(s2);
usamos Code:
s1.equalsIgnoreCase(s2);
nesta versão não é necessário criar uma nova string (toUpperCase) disperdiçando CPU.


A mesma regra vale para:
ao invés de Code:
new Integer(s).intValue();
usamos Code:
Integer.parseInt(s);
(isso vale para os outros wrappers de primitivos)


Adicionando conteúdo a uma StringBuilder
ao invés de Code:
stringBuilder.append(s.substring(x,y));
usamos Code:
stringBuilder.append(s,x,y);
além de mais bonito, ecomiza recursos passando a responsabilidade da separação de conteúdo para o StringBuilder, que por si só já é bem otimizado.


Imagine uma situação aonde temos uma lista já pronta e carregada, e queremos torna-la imutável.
ao invés de de criarmos uma implementação de collection (no caso arrayList) e tratarmos os métodos lançando excessão...
usamos Code:
Collections.unmodifiableList(minhaLista);
dessa forma colocamos uma wrapper sobre nosso objeto, evitando criação de "mutretas" e código complexo. Essa técnica de Wrapper é muito interessante, e pode ser usada em várias situações, como para código thread-safe por exemplo.

É sempre importante a leitura do JavaDoc. As dicas de performance são sempre bem definidas.

Thursday, May 25, 2006

Strategy Pattern

Mais um padrão comportamental, em relação ao Business, assim como o Visitor.

Muito interessante: a idéia é usar Composição ao invés de Herança, ou seja, ao invés de ser é melhor ter.

Quando você tem um representação (objeto de domínio) que possui um comportamento muito váriavel, ao invés de hierarquia de herança para resolver o problema com a variação, seria mais interessante passar essa responsabilidade para um outro objeto (objeto terceiro), deixando sua estrutura mais simples e focada no negócio.

Em alguns casos, ter é melhor do que ser!

Friday, May 19, 2006

SESINFO - IMS

Fazia tempo que não postava nada... Tava na correria com o Evento na Mêto, o 3º SESTINFO, no qual participei dando curso e palestra.

Foi muito legal, descobri um lado interessante e que gostei muito. Quem sabe não começoa a levar a idéia de dar aula à sério???

Muito legal, coloquei as fotos no meu flickr.

Tuesday, May 02, 2006

Dica: StringBuilder

A partir do java 5 temos a classe StringBuilder . A utilização é bem similar a da já conhecida StringBuffer. Com a vantagem de ñ ser thread-safe, trazendo uma melhor performance. Na maioria dos cenários, é possível essa substituição !

Aqui vai um simples implementação teste:

import static java.lang.System.out;

import java.io.IOException;

public class TesteStringBuffer {

public static void main(String[] args) throws IOException {
final Appendable buf = new StringBuilder();
for (int i=0; i<1024; i++) {
buf.append(Integer.toString(i));
}
out.print(buf);
}

}

As 2 classes implementam Appendable, CharSequence.