Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Оптимизация программ


Автор: batigoal 15.3.2005, 11:53
Я помню, что "один топик - один вопрос", но все же:

1. Что входит в понятие оптимизации программы?
2. Как это делается (не на уровне байткода)?

Я слышал, что многие компиляторы (не джавовские) выполняют некоторые оптимизирующие действия, например, в коде:

Код

while(..)
{
  int i;
  System.out.println("A");
}


самостоятельно вынесут "int i;" за пределы цикла. Делает ли что-нибудь подобное javac?

Автор: Domestic Cat 15.3.2005, 12:02
http://forum.vingrad.ru/index.php?showtopic=35700&hl=%EE%EF%F2%E8%EC%E8%E7%E0%F6%E8%FF
http://forum.vingrad.ru/index.php?showtopic=24799&st=0

Цитата(Lamer @ 15.3.2005, 02:53)
Делает ли что-нибудь подобное javac?


Делает. И JIT делает. smile

Автор: batigoal 15.3.2005, 12:48
Пардон, не заметил этих тем. Полезно.

Автор: batigoal 15.3.2005, 16:02
Пойду исправлять Vector'ы на ArrayList'ы. smile

Автор: NotGonnaGetUs 16.3.2005, 12:20
Цитата

http://forum.vingrad.ru/index.php?showtopi...%E7%E0%F6%E8%FF
http://forum.vingrad.ru/index.php?showtopic=24799&st=0

Прочитал что там написано и сходил по ссылкам.

Интересно, это
Код

    try {
            for (ii = 0; ; ii++)
                  array[ii] = ii;
    } catch (IndexOutOfBoundsException e) {}

действительно работало в java1.1 эффективнее, чем это
Код

      for (ii = 0; ii<array.length; ii++)
             array[ii] = ii;


?

Второй вариант работает в 5,5 раз быстрее в client mode, а сервер mode совсем конец света smile
Цитата

                  -server                          без него: 
1.3.1          570 vs 8062                  430 vs 2273
1.4.2_06    360ms vs 10600ms        570 vs 3000
1.5.0_01    350 ms vs 420 ms          560 vs 3100


Короче говоря, надо с юмором относится к некоторым рекомендациям.
Таким как выше приведённая, "String.equalsIgnoreCase() быстрее String.equals()" и т.д. smile


Автор: Domestic Cat 17.3.2005, 06:55
Цитата
Короче говоря, надо с юмором относится к некоторым рекомендациям.

Я в это не вникал, если честно. Все эти оптимизации хороши там где надо, в частности в играх; в обычных приложениях лучше писать красивый код.
Так, я бы try-catch не пользовал в любом случае, т.к. он там ни к селу, ни к городу. equals пользовал бы наиболее подходящий. Хотя про equals - лажа, достаточно в сорец глянуть.



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)