- 1
- 2
int factor = (chbFactor.Checked) ? 1 : 0; // bool to int
factor = (factor * 2) - 1; // -1 or +1
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+966.3
int factor = (chbFactor.Checked) ? 1 : 0; // bool to int
factor = (factor * 2) - 1; // -1 or +1
Вторая строчка превращает 0 в -1 а единичку не трогает
guest 24.02.2010 15:59 # 0
pushkoff 24.02.2010 16:16 # 0
не говнокод...
murz 24.02.2010 16:25 # +2.4
int factor = (chbFactor.Checked) ? 1 : -1; говнокод? :)
guest 24.02.2010 16:25 # +1.2
Или я что-то не заметил?
Vidmak 24.02.2010 16:32 # 0
guest 24.02.2010 16:41 # 0
murz 24.02.2010 16:50 # +1
guest 24.02.2010 19:02 # +0.8
Это по вашему не условный переход?
pushkoff 25.02.2010 00:07 # 0
guest 26.02.2010 00:27 # +1
if (chbFactor.Checked) factor = 1; else factor = 0;
замечание "нет условных переходов" не засчитано.
guest 26.02.2010 11:52 # 0
Само собой условный переход имеет место в обоих случаях, но с ?: инструкций получается меньше.
pushkoff 26.02.2010 14:11 # +1
все что я говорил относилось к С++ и х86.
guest 02.03.2010 14:49 # +1
guest 02.03.2010 14:50 # +1
guest 02.03.2010 14:56 # 0
Сами попробуйте и напишите 2 эквивалентных проги с циклом с несколькими перемещениями данных в цикле, в зависимости от условия на ассемблере через setx и условный переход.
Покрайней мере результат измерений на новых процессорах вас удивит. Выйгрышь за переходами и серьёзный. Конечно может и можно найти вариант, где setx быстрее, но в большинстве случаев так...
pushkoff 03.03.2010 16:32 # 0
guest 03.03.2010 18:51 # +1
А с чем им спариватся? У них нет самцов.;p
xaionaro 04.03.2010 18:53 # 0
Однако, пытаясь приблизиться к случаю со включенными оптимизациями, я провёл эксперимент вставив нужный ассмовый код в качестве volatile вставки, и пришёл к обратному выводу. А т.к. обычно программа компилируется с оптимизациями, то для себя я сделаю вывод, что обычно алгоритм с setx работает где-то на 20% быстрее, чем алгоритм с jx.
Хотя на самом деле, тут ещё вопрос в выравнивании и т.п. В каждом конкретном эксперименте может быть является возможным получить разные результаты.
guest 24.02.2010 19:18 # 0
guest 25.02.2010 06:27 # 0
guest 02.03.2010 14:50 # 0
guest 25.02.2010 11:09 # −4
xaionaro 04.03.2010 18:54 # 0