Что быстрее проверить - “больше нуля” либо “не равняется нулю”?

179
27 июля 2018, 23:10

Что лучше использовать?

a > 0 

или

a != 0

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

Имеется ввиду в плане производительности, что сделать легче - проверить на больше или не равно ?

Answer 1

рассмотрим тестовый класс

public class OpsTest
{
    public boolean gZero(int a)
    {
        return a > 0;
    }
    public boolean neZero(int a)
    {
        return a != 0;
    }
}

в байт коде видим следующее:

  // Method descriptor #15 (I)Z
  // Stack: 1, Locals: 2
  public boolean gZero(int a);
    0  iload_1 [a]
    1  ifle 6
    4  iconst_1
    5  ireturn
    6  iconst_0
    7  ireturn
      Line numbers:
        [pc: 0, line: 15]
      Local variable table:
        [pc: 0, pc: 8] local: this index: 0 type: OpsTest
        [pc: 0, pc: 8] local: a index: 1 type: int
      Stack map table: number of frames 1
        [pc: 6, same]
  // Method descriptor #15 (I)Z
  // Stack: 1, Locals: 2
  public boolean neZero(int a);
    0  iload_1 [a]
    1  ifeq 6
    4  iconst_1
    5  ireturn
    6  iconst_0
    7  ireturn
      Line numbers:
        [pc: 0, line: 20]
      Local variable table:
        [pc: 0, pc: 8] local: this index: 0 type: OpsTest
        [pc: 0, pc: 8] local: a index: 1 type: int
      Stack map table: number of frames 1
        [pc: 6, same]

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

READ ALSO
Статический WebDriver и PageFactory

Статический WebDriver и PageFactory

Структура выглядела примерно так:

193
Не виден метод getFragmentManager

Не виден метод getFragmentManager

Имеется RecyclerViewНеобходимо по нажатию на элемент перейти во фрагмент

199
взаимное расположение img в css

взаимное расположение img в css

Задача: расставить изображения так, как показано в рисунке во вложении ( два друг под другом, а третье - справа)

186
Не выводится alert

Не выводится alert

Вот такой код:

164