Скорость выполнения Java - PullRequest
3 голосов
/ 22 июня 2010

Я новичок в программировании на Java.
Мне любопытно узнать скорость выполнения, а также скорость создания и удаления объектов.
У меня есть несколько методов, таких как:

и

   private static void getWBO2S8Volts() {
        int A = Integer.parseInt(Status.LineToken.nextToken());
        int B = Integer.parseInt(Status.LineToken.nextToken());
        int C = Integer.parseInt(Status.LineToken.nextToken());
        int D = Integer.parseInt(Status.LineToken.nextToken());
        Status.WBO2S8Volts=((A*256)+B)/32768;
        Status.WBO2S8VoltsEquivalenceRatio=((C*256)+D)/256 - 128;

        Log.level1("WideBand Sensor 8 Voltage: " + Double.toString(Status.WBO2S8Volts));
        Log.level1("WideBand Sensor 8 Volt EQR:" + Double.toString(Status.WBO2S8VoltsEquivalenceRatio));

Было бы разумно создать отдельный метод для обработки данных, поскольку они повторяются?Или это было бы просто быстрее выполнить как один метод?У меня есть несколько из них, которые нужно будет переписать, и мне интересно, действительно ли это улучшит скорость выполнения или это так же хорошо, или если есть ряд инструкций, где становится хорошей идеей создать новый метод,

В основном, что быстрее или когда становится быстрее использовать один метод для обработки объектов, а не другой метод для обработки нескольких похожих объектов?переменная, затем выполнение математической операции над ней происходит быстрее, чем создание нового метода и затем вытягивание переменной, а затем выполнение математической операции над ним.Мой вопрос на самом деле, где скорость на ..

Все эти методы вызываются только для чтения данных и установки Status.Variable.В моем классе около 200 методов, которые генерируют данные.

Ответы [ 3 ]

4 голосов
/ 22 июня 2010

Разница в скорости вызова фрагмента кода внутри метода или вне его незначительна. Особенно по сравнению с использованием правильного алгоритма для задачи.

Я бы порекомендовал вам использовать метод в любом случае, не для производительности, а для удобства обслуживания. Если вам нужно изменить одну строку кода, которая, как оказалось, представляет ошибку или что-то еще, и вы скопировали / вставили этот сегмент кода в 50 разных местах, было бы намного сложнее изменить (и найти), чем иметь его в одном месте ,

Итак, не беспокойтесь о снижении производительности, вызванном использованием методов, потому что это практически ничего (даже лучше, виртуальная машина может выполнять некоторые вызовы)

1 голос
/ 22 июня 2010

Я думаю, что комментарий С. Лотта к вашему вопросу, вероятно, идеально ударил по голове - нет смысла оптимизировать код, пока вы не уверены, что он действительно нужен.Скорее всего, в конечном итоге вы потратите много времени и усилий на то, чтобы почти ничего не выиграть.

Я также буду вторым ответом службы поддержки, поскольку разница во времени выполнения между вызовом отдельного метода и вызовомвстроенный код незначителен (на самом деле это было то, что я хотел опубликовать, но он как бы меня опередил).Это может быть даже ноль, если оптимизирующий компилятор или JIT решит встроить метод в любом случае (однако я не уверен, есть ли такие компиляторы / JIT для Java).

Есть одно преимуществооднако, подход с использованием отдельного метода - если вы разделите свой код обработки данных на отдельный метод, теоретически вы можете добиться некоторого повышения производительности, вызвав этот метод из отдельного потока, таким образом отделяя ваш (возможно трудоемкий) код обработки от вашего другогокод.

1 голос
/ 22 июня 2010

Мне интересно узнать скорость выполнения, а также скорость создания и уничтожения объектов.

Создание объектов в Java достаточно быстрое, поэтому вам не нужно об этом беспокоитьсяЗа исключением экстремальных и необычных ситуаций.

Уничтожение объектов в современной реализации Java обходится без затрат ... если только вы не используете финализаторы.И есть очень немного ситуаций, в которых вы должны даже думать об использовании финализатора.

В основном, что быстрее или когда становится быстрее использовать один метод для обработки объектовпо сравнению с использованием другого метода для обработки нескольких похожих объектов?

Разница незначительна относительно всего, что происходит.


Как @ S.Lott говорит: "Пожалуйстане оптимизировать микро ".Сосредоточьтесь на написании простого, ясного, точного и правильного кода, использующего наиболее подходящие алгоритмы.Только «микро» оптимизировать, когда у вас есть явное свидетельство критического узкого места.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...