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


Автор: Сергей85 21.01.17, 15:18
if bBool=true

и

if bBool

?

Автор: Akina 21.01.17, 16:49
Первое - плюс одна операция сравнения.

Автор: __Sergey__ 21.01.17, 18:26
Компилятору всё равно, для этих записей генерируется одинаковые инструкции.

Автор: Akina 21.01.17, 18:38
Значит, переменная bBool определена как boolean. Тогда оптимизатор правильно и вполне ожидаемо удалил избыточное сравнение.

Автор: Сергей85 22.01.17, 08:52
Вы не оставили мне выбора.

При тесте на трех 16миллионном массивах без =true 6:58, 46, 47, с true - 7:19, 48, 48. Какого-то черта разница все-таки есть. Перепроверил 2 раза.

Ок, ладно. В случае с Bool укороченная запись, ускоряющая код, найдена. Но есть ли похожие укороченные записи для других типов данных? Или укороченные записи самих сравнений. Вон, Xor неожиданно выстрелил по скорости...

Добавлено
Стоп.

В VB6 нет такой записи как "!bTemp". Not bTemp... Опять тестить, надоело...

Добавлено
А вот тут фигня получилась NOT медленнее, чем = FALSE. 8:00, 1:18,49 - против 7:29, 1:11, 47.

Добавлено
Цитата Akina @

Может, NOT инвертирует, а потом сравнивает с True; а =false - просто сравнивает с false?

Автор: Mikle 22.01.17, 11:35
Цитата Сергей85 @
NOT медленнее, чем = FALSE

Вместо этого
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    If a = False Then do_something

Или этого:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    If Not a Then do_something

Можно попробовать третий вариант:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    If a Then Else do_something

Автор: Сергей85 22.01.17, 12:41
a = false: 7:38
a Then Else: 7:24. Да, подходит. Если условие одно. А если несколько - не проверял.

(добавлено) Этот результат может быть неверным. Проверял с дебаггером - а он, как оказалось, вносит погрешность ~2% в измерения. Здесь разница слишком маленькая, чтобы считать ее за истину. Перепроверять надо.

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