23 марта 2012 г.

Keep call stacks small

В последней статье Мартина Томпсона встретил интересную идею в списке техник оптимизации:
Keep call stacks reasonably small. Still more work to do here. If you are crazy enough to use Spring, then check out your call stacks to see what I mean! The garbage collector has to walk them finding reachable objects.

Это интересная мысль, стоит ее подумать и потестировать. Т.е. она выглядит логичной -- если у вас "сверху" над вашим рабочим стеком висит еще 15 вызовов Спринга, то GC и правда на каждой итерации (даже при сборке молодого поколения) придется сканировать все эти 15 фреймов, и все достижимые из них объекты. Вопрос лишь в том, каков порядок величины этого эффекта -- начиная с какого уровня заоптимизированности кода имеет смысл начинать думать об этом, как о возможном лимитирующем факторе.

2 комментария:

  1. у меня в своё время была дурная идея - написать перетолмачивалку из spring xml/annotation в один простой класс, который бы делал всё то же самое, но без xml и прочей обвязки - все создания объектов, выставление св-в и т.п.

    ОтветитьУдалить
  2. Я на предыдущей работе делал xsl, которая генерила такой класс на базе string beans xml. А http://levin-matveev.livejournal.com/79407.html вот недавно что-то подобное, только более универсальное писал.

    ОтветитьУдалить