Поиск по этому блогу

понедельник, 26 декабря 2011 г.

Немного об отпимизациях

Пролистываю сейчас "java performance and scalability" Dov Bulka.  В большинстве своем любопытная оптимизация базовых классов, некоторые моменты даже были новыми.
Коротко:
  1. если об оптимизации (new StringBuffer()).apend("1").apend("2") вместо "1"+"2" не писал только ленивый, то если надо проверить первую букву строки лучше проверить
    if ('a' == s.charAt(0)) {...}
    чем
    if (s.startsWith("a")){...}
  2. интересно, что StringBuffer имеет свой initial capacity ~ 16
    и можно оптимизировать так
    StringBuffer sb = new StringBuffer(1024);
  3. ArrayList намного быстрее Vector, но это не синхронизированная коллекция.
    Initial capacity 10, каждый раз удваивается при увеличении массива сверх capacity.
  4. Всегда лучше использовать буферезированные потоки BufferedOutputStream и BufferedInputStream для увеличения performance.
  5. При синхронизации очень дорого обходятся средства синхронизации, типа synchronize.