Swift - лучший способ написать если еще - PullRequest
0 голосов
/ 23 мая 2018

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

Метод 1:

    if jobListView.tableView.jobIds.count > 0 {
        container.isHidden = false
    } else {
        container.isHidden = true
    }

Метод 2:

    container.isHidden = jobListView.tableView.jobIds.count <= 0

Я понимаю, что второй более читабелен, но будет ли он иметь какое-либо значение в исполнениискорость.

1 Ответ

0 голосов
/ 23 мая 2018

Я понимаю, что второй более читабелен

Это хороший аргумент.Начните с версии, с которой вам (или вашей команде) удобнее.

изменит ли это скорость выполнения?

Как уже упоминалось выше - профилируйте свое приложение и найдите узкие места в производительности.Затем вы можете решить, нужно ли улучшать эту конкретную часть.

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

var hidden = false

func foo(n: Int) {
    if n > 0 {
        hidden = false
    } else {
        hidden = true
    }
}

и

var hidden = false

func foo(n: Int) {
    hidden = n <= 0
}

генерируют идентичный код сборки

    .private_extern __T04main3fooySi1n_tF
    .globl  __T04main3fooySi1n_tF
    .p2align    4, 0x90
__T04main3fooySi1n_tF:
    pushq   %rbp
    movq    %rsp, %rbp
    testq   %rdi, %rdi
    setle   __T04main6hiddenSbvp(%rip)
    popq    %rbp
    retq

какВы можете проверить с помощью

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