Форум: "Потрепаться";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
ВнизОрешник отдыхает. Найти похожие ветки
← →
Kerk © (2004-10-19 14:50) [0]Разбираю я исходник. Там вот такой шедевр:
inline Void SetTrueIfFalse(Boolean &variable) {
if (!variable) variable = true;
}
Смотрю на это и чувствую, что можно оптимальнее сделать.
Минут 5 медитировал. Когда дошло КАК съоптимизировать это....
в общем давно я так истерически не смеялся... :))))
← →
clickmaker © (2004-10-19 14:54) [1]Хм... Боюсь показацца тупым, но что тут можно соптимизировать?
← →
DiamondShark © (2004-10-19 14:57) [2]
> но что тут можно соптимизировать?
Да, практически, всё ;)
← →
Anatoly Podgoretsky © (2004-10-19 14:58) [3]clickmaker © (19.10.04 14:54) [1]
variable = true;
← →
Alex_Bredin © (2004-10-19 15:00) [4]if (!variable) - лишнее
← →
Ega23 © (2004-10-19 15:01) [5]Не, ну можно
variable = variable xor false;
← →
clickmaker © (2004-10-19 15:02) [6]вот над таким я бы посмеялся
inline Void SetTrueIfFalseAndFalseIfTrue(Boolean &variable) {
if (!variable) variable = true;
else variable = false;
}
а так, все равно компилятор, увидев inline, всунет в код вместо вызова строку
if (!variable) variable = true;
вполне пристойный фрагмент кода, на мой взгляд
← →
Kerk © (2004-10-19 15:03) [7]Там эта функция отовсюду вызывается... LOL :)))))
← →
clickmaker © (2004-10-19 15:06) [8]
> [3] Anatoly Podgoretsky © (19.10.04 14:58)
> clickmaker © (19.10.04 14:54) [1]
> variable = true;
ну вообще, в данном случае, согласен.
Однако могут быть варианты, когда проверка условия займет меньше времени, чем установка значений
← →
Ega23 © (2004-10-19 15:06) [9]Ega23 © (19.10.04 15:01) [5]
Нет, так не правильно...
← →
DiamondShark © (2004-10-19 15:11) [10]
> а так, все равно компилятор, увидев inline, всунет в код
> вместо вызова строку
> if (!variable) variable = true;
>
> вполне пристойный фрагмент кода, на мой взгляд
if там нафига?
Можно указать, в каком случае после выполнения этого кода переменная получит значение, отличное от true?
← →
Kerk © (2004-10-19 15:15) [11]
> Можно указать, в каком случае после выполнения этого кода
> переменная получит значение, отличное от true?
Вот интересно в чью больную голову пришло реализовыватьvariable = true
как inline-функцию, причем еще и с if-ом.. :)))
← →
Ega23 © (2004-10-19 15:21) [12]Kerk © (19.10.04 15:15) [11]
Ну есть такое понятие, как стиль. У меня вот начальник всегда пишет
if (variable = true) then ....
На вопрос "Почему?" отвечает - "Привычка".
← →
SammIk © (2004-10-19 15:22) [13]xor eax,eax
inc eax
mov [esp+4],eax
Может так быстрее будет?
← →
clickmaker © (2004-10-19 15:24) [14]
> [11] Kerk © (19.10.04 15:15)
> Вот интересно в чью больную голову пришло реализовывать
> variable = true как inline-функцию, причем еще и с if-ом..
> :)))
Зато каменты писать не пришлось: название функции все объясняет :))
← →
DiamondShark © (2004-10-19 15:28) [15]Я всегда не доверял этому Ц...
← →
Игорь Шевченко © (2004-10-19 16:52) [16]DiamondShark © (19.10.04 15:28) [15]
> Я всегда не доверял этому Ц...
http://www.rsdn.ru/forum/Message.aspx?mid=858629&only=1
;)
← →
Alex* (2004-10-19 18:07) [17]Не понимаю над чем смеяться, нравится атору пусть так пишет, а кому не нравится пусть переделываю на свой лад
← →
VMcL © (2004-10-19 19:21) [18]>>Kerk © (19.10.04 14:50)
Это цветочки. Мне вот такой код в одном VB.NET"ом проекте встречался, причем в нескольких местах:If bReturn = True Then
Return True
Else
Return False
End If
← →
Verg © (2004-10-19 19:26) [19]
> Kerk © (19.10.04 14:50)
> Разбираю я исходник. Там вот такой шедевр:
> inline Void SetTrueIfFalse(Boolean &variable) {
> if (!variable) variable = true;
Ну дык задефайни ее
#define SetTrueIfFalse(n) { n = true; }
← →
Verg © (2004-10-19 19:27) [20]да, и почему Boolean? Почему не bool?
← →
Marser_t (2004-10-19 19:27) [21]Сильно. Подобное бывает, когда пишешь "на автомате", не думая. "Автомат", он подводит, случается :-)
← →
ZDima © (2004-10-19 21:19) [22]Прикольно.
А ещё так можно
function SetTrueIfFalseAndFalseIfTrue(value:boolean):boolean;
begin value:=not value; end;
← →
Kerk © (2004-10-25 12:56) [23]
> Verg © (19.10.04 19:27) [20]
> да, и почему Boolean? Почему не bool?
Потому что .NET
> ZDima © (19.10.04 21:19) [22]
> Прикольно.
> А ещё так можно
> function SetTrueIfFalseAndFalseIfTrue(value:boolean):boolean;
> begin value:=not value; end;
Хм.. сильная идея. :))))
← →
}|{yk © (2004-10-25 13:07) [24]Операция присваивания занимает больше процессорного времени, чем операция сравнения. Таким образом в результате выполнения данной функции присваивание будет выполняться только в 50% случаем, потому данный код есть оптимальным (переведи его на asm, поймешь)
← →
Kerk © (2004-10-25 13:11) [25]
> }|{yk © (25.10.04 13:07) [24]
перевел.or eax,eax
jnz @@go
mov eax,1
.align 4
@@go:
против:mov eax,1
ну вообще тут нужно такты считать.
← →
Kerk © (2004-10-25 13:12) [26]Кстати, надо еще учесть предсказание переходов.. так что не все так просто.
← →
han_malign © (2004-10-25 14:26) [27]> учесть предсказание переходов
- в свое время для коротких задержек использовалась конструкцияasm jmp 2 end;
, как раз для сброса конвеера, посколькуnop
процессором игнорируется - возможно здесь таже ситуация. (при работе с некоторым железом (LCard например), без "магических" задержек не обойтись)
← →
TUser © (2004-10-25 15:23) [28]
> http://www.rsdn.ru/forum/Message.aspx?mid=858629&only=1
LOL. Это круто заархивированное сообщение - вот что он выдает. 2295 знаков ужато в программу размером 838 байт исходного кода.On the first day of Christmas my true love gave to me
a partridge in a pear tree.
On the second day of Christmas my true love gave to me
two turtle doves
and a partridge in a pear tree.
On the third day of Christmas my true love gave to me
three french hens, two turtle doves
and a partridge in a pear tree.
On the fourth day of Christmas my true love gave to me
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the fifth day of Christmas my true love gave to me
five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the sixth day of Christmas my true love gave to me
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the seventh day of Christmas my true love gave to me
seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the eighth day of Christmas my true love gave to me
eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the ninth day of Christmas my true love gave to me
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the tenth day of Christmas my true love gave to me
ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the eleventh day of Christmas my true love gave to me
eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the twelfth day of Christmas my true love gave to me
twelve drummers drumming, eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.043 c