Java .startsС оптимизацией

Итак, у меня возник вопрос. Сегодня я начал оптимизировать свой код и дошел, например, до такого:

return !this.message.startsWith("/");

Хорошо следуйте рекомендациям по оптимизации, которые я взял из здесь ( связано с правилом)

Итак, как же должен быть написан этот код в более оптимизированной версии? В настоящее время я получил:

return !(this.message.length () > ZERO) && this.message.charAt(ZERO) == Slash;

Я правильно написал? А если я не так написал, то что я не так написал?

Спасибо, Тамбре


person tambre    schedule 08.04.2013    source источник
comment
Вам нужно его оптимизировать? Первая читабельнее...   -  person NilsH    schedule 08.04.2013
comment
почему вы создали именованную константу для «0»? это выглядит ужасно.   -  person nothrow    schedule 08.04.2013
comment
Сомневаюсь, что будет намного быстрее...   -  person assylias    schedule 08.04.2013
comment
@Yossarian: Это может упростить изменение программы, если значение нуля изменится :-) geekslop .com/2012/funny-computer-programmer-quotes   -  person leonbloy    schedule 08.04.2013
comment
Прохождение правил на этом сайте: некоторые из них имеют смысл, а некоторые действительно бесполезны.   -  person assylias    schedule 08.04.2013
comment
Шокирующий список. Худшее, что я когда-либо видел, а я видел несколько придурков. Пункты {6,14-7,19,38,48,55,72,76,78-9,80-1,112-3,125,129,131} однозначно неверны, и многие из них вообще не имеют отношения к производительности. Пункты {9,12,21,23,29,33-4,41,50-2,54,58,75,82,83,97,100,109,115} в лучшем случае сомнительны. 4 — это просто глупость, которую на самом деле никто не делает. {10-11} ссылаются на код, который изначально не будет работать. 59 непонятно. {62-67} идентичны, как и {90-93,114} и {32,122-3}. Я согласен с {19 'избегайте ненужных скобок'}, но это не имеет абсолютно никакого отношения к производительности.   -  person user207421    schedule 09.04.2013


Ответы (1)


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

return !(this.message.length () > ZERO && this.message.charAt(ZERO) == Slash);

У вас есть круглые скобки вокруг только первого члена условия, что неверно. Немного более читаемая версия будет:

return this.message.length () <= ZERO || this.message.charAt(ZERO) != Slash;
person Ted Hopp    schedule 08.04.2013
comment
Хороший пример оптимизации, которая ничего не оптимизирует и превращает правильный код в глючный :-) - person assylias; 08.04.2013
comment
Помните, что ранняя оптимизация — корень всех зол - person jsedano; 08.04.2013
comment
@anakata - Или, как говорится, я лучше оптимизирую отлаженную программу, чем отлаживаю оптимизированную. - person Ted Hopp; 08.04.2013