Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.14.70.203] |
|
Сообщ.
#1
,
|
|
|
if bBool=true
и if bBool ? |
Сообщ.
#2
,
|
|
|
Первое - плюс одна операция сравнения.
|
Сообщ.
#3
,
|
|
|
Компилятору всё равно, для этих записей генерируется одинаковые инструкции.
|
Сообщ.
#4
,
|
|
|
Значит, переменная bBool определена как boolean. Тогда оптимизатор правильно и вполне ожидаемо удалил избыточное сравнение.
|
Сообщ.
#5
,
|
|
|
Вы не оставили мне выбора.
При тесте на трех 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? |
Сообщ.
#6
,
|
|
|
Цитата Сергей85 @ NOT медленнее, чем = FALSE Вместо этого If a = False Then do_something Или этого: If Not a Then do_something Можно попробовать третий вариант: If a Then Else do_something |
Сообщ.
#7
,
|
|
|
a = false: 7:38
a Then Else: 7:24. Да, подходит. Если условие одно. А если несколько - не проверял. (добавлено) Этот результат может быть неверным. Проверял с дебаггером - а он, как оказалось, вносит погрешность ~2% в измерения. Здесь разница слишком маленькая, чтобы считать ее за истину. Перепроверять надо. |