Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизКак уменьшить такую конструкцию? Найти похожие ветки
← →
Tuk (2010-01-31 04:50) [0]if A > 1 then
begin
if not B then
ChangeSize;
end
else
if B then
ChangeButtonSize;
← →
Tuk (2010-01-31 04:55) [1]Ой правильно будет так:
if A > 1 then
begin
if not B then
ChangeSize;
end
else
if B then
ChangeButton;
← →
KilkennyCat © (2010-01-31 05:44) [2]if A > 1 then if B then ChangeButton else ChangeSize;
← →
test © (2010-01-31 06:01) [3]if (A > 1) and B then ChangeButton else ChangeSize;
← →
Tuk (2010-01-31 06:11) [4]Я извиняюсь, видимо ночь влияет.
Эти два метода одинаковы. :)
Вот окончательный вариант. Еще раз сорри, я не специально.
if A > 1 then
begin
if not B then
ChangeSize;
end
else
if B then
ChangeSize;
← →
KilkennyCat © (2010-01-31 10:19) [5]
> test © (31.01.10 06:01) [3]
да, ты прав, я что-то невнимательно с бегинами ендами обошелся...
← →
jack128_ (2010-01-31 11:13) [6]
if (A > 1) <> B then
ChangeSize();
← →
Кто б сомневался © (2010-01-31 16:13) [7]if (A > 1) xor B then
ChangeSize();
← →
Кто б сомневался © (2010-01-31 16:14) [8]Мой вариант быстрее [6] и круче выглядит :).
← →
Игорь Шевченко © (2010-01-31 18:57) [9]
> быстрее [6]
На каком основании ?
> и круче выглядит :).
Это имеет решающее значение для увольнения
← →
Jeer © (2010-01-31 21:29) [10]
> Игорь Шевченко © (31.01.10 18:57) [9]
Ну как ты не понял - его варианте использован bold-шрифт. :)
← →
Rouse_ © (2010-01-31 21:37) [11]
> Кто б сомневался © (31.01.10 16:14) [8]
> Мой вариант быстрее [6] и круче выглядит :).
За такие чудеса уже много крутышек поувольняли :)
← →
KilkennyCat © (2010-01-31 22:01) [12]можно еще короче: ChangeSize(A, B);
← →
Кто б сомневался © (2010-01-31 22:42) [13]
> Это имеет решающее значение для увольнения
if (A > 1) xor B then
ChangeSize();
Чем не нравится? Вариант полностью рабочий, не путанный и прозрачный. Или может программисту трудно понять что делает xor?
Значит это не программист - это его проблемы с квалификацией.
← →
Игорь Шевченко © (2010-01-31 22:43) [14]
> Или может программисту трудно понять что делает xor
программисту нафиг не надо понимать, что делает xor, ему зарплату не за это платят
← →
Кто б сомневался © (2010-01-31 22:44) [15]Тогда в чем проблема в [9]? Уточните.
← →
Кто б сомневался © (2010-01-31 22:45) [16]
> Игорь Шевченко © (31.01.10 18:57) [9]
>
>
> > быстрее [6]
>
>
> На каком основании ?
На том основании что XOR быстрее CMP
← →
Jeer © (2010-01-31 22:52) [17]
> Кто б сомневался © (31.01.10 22:44) [15]
>
> Тогда в чем проблема в [9]? Уточните.
Проблема в том, что тебя за такое "смешивание" прикладной и асм. логики не то, что уволят, но даже на работу не возьмут.
← →
Кто б сомневался © (2010-01-31 22:55) [18]
> Проблема в том, что тебя за такое "смешивание" прикладной
> и асм. логики не то,
Что за бред уважаемый.
If A or B then или
if A and B then -
Встречается на каждом шагу битовая логика, вы с луны что-ли свалились?
← →
Кто б сомневался © (2010-01-31 22:55) [19]Или недоучились?
← →
Игорь Шевченко © (2010-01-31 22:55) [20]Кто б сомневался © (31.01.10 22:44) [15]
В 9 нет проблем
> На том основании что XOR быстрее CMP
Точно быстрее ? Готов аргументировать ?
← →
Кто б сомневался © (2010-01-31 22:58) [21]Jeer © (31.01.10 22:52) [17]
If A or B then или
if A and B then
If not A and B then
if not A then
if A or not B then
Вы посмотрите в какой нибудь хороший код, хотя бы в VCL -там такое частенько встречается.
← →
Кто б сомневался © (2010-01-31 22:59) [22]
> Точно быстрее ? Готов аргументировать ?
Ты сначала свои аргументы покажи, почему CMP быстрее (или равно) XOR будет..
← →
Jeer © (2010-01-31 23:05) [23]
> Кто б сомневался © (31.01.10 22:55) [19]
>
> Или недоучились?
Все на что смог твой мозг ?
← →
Игорь Шевченко © (2010-01-31 23:07) [24]Кто б сомневался © (31.01.10 22:59) [22]
Слив защитан
← →
Jeer © (2010-01-31 23:08) [25]> Кто б сомневался © (31.01.10 22:58) [21]
Иди и подумай разницу между битовой и прикладной логикой.
← →
Anatoly Podgoretsky © (2010-01-31 23:16) [26]
> Кто б сомневался © (31.01.10 22:59) [22]
Не пойдет, это ты стал утверждать, без доказательств. Вот и давай доказывай - это первое, а второе нафиг нужно, лучше более естественноые, более понятные конструкции без выкрутасов.
← →
Кто б сомневался © (2010-01-31 23:23) [27]
> второе нафиг нужно, лучше более естественноые, более понятные
> конструкции без выкрутасов.
Что значит более естественные? Что тут понимать, трудно понять что такое исключающее или?
чем оно менее естественнее для программиста чем <>?
если вы говорите про ествественное "или", которые использует человек (т.е. тот самый союз "или" - кошка или собака), то
это как раз xor, а не or - т.к. человек обычно выбирает или одно , или другое (xor), а не одно или другое или сразу и то и другое вместе (как в случае с or).
← →
Кто б сомневался © (2010-01-31 23:24) [28]
> обычно выбирает
Точнее имеет в виду. Не два предмета, а один из них.
← →
Anatoly Podgoretsky © (2010-01-31 23:26) [29]> Кто б сомневался (31.01.2010 23:23:27) [27]
Ты не читай мне лекцию, что такое XOR ты ближе к телу.
← →
KilkennyCat © (2010-01-31 23:27) [30]
> Иди и подумай разницу между битовой и прикладной логикой.
а каким местом это?
Собственно, ни у кого не вызывает проблем if (a > b) and (c > d) ? Тогда почему вызывает проблема хоr? not, and, or и xor - все из одной кучи.
← →
Кто б сомневался © (2010-01-31 23:31) [31]
> Anatoly Podgoretsky © (31.01.10 23:26) [29]
>
> > Кто б сомневался (31.01.2010 23:23:27) [27]
>
> Ты не читай мне лекцию, что такое XOR ты ближе к телу.
вот опять вы возмущаетесь. Опять не хотите признавать очевидное.
Если человек использует союз "или" в жизни, то он будет XOR по свойству, а не OR.
Условие:
АП или ИШ .
Или тот или тот. Но не как не оба. Понимаете? это xor .
← →
xayam © (2010-01-31 23:34) [32]Удалено модератором
← →
test © (2010-01-31 23:36) [33]Ничто не предвещало беды ))
← →
Anatoly Podgoretsky © (2010-01-31 23:45) [34]Простейшия проверка показала резкий выигрыш "CMP" при сравнение на 2 миллиардах иттераций. XOR в три раза медленнее.
procedure TForm1.Button1Click(Sender: TObject);
var
a: Integer;
i:Integer;
b: boolean;
t:Integer;
c: boolean;
begin
a:=1;
b:=true;
t:=gettickcount;
for I := 0 to 2000000000 - 1 do
c := (a>1) xor b;
ShowMessage(Inttostr(GetTickCount-t)); // 2543
if c then Label1.Caption := "true" else Label1.Caption := "false";
t:=gettickcount;
for I := 0 to 2000000000 - 1 do
c := (a>1) <> b;
ShowMessage(Inttostr(GetTickCount-t)); //843
end;
← →
test © (2010-01-31 23:48) [35]Anatoly Podgoretsky © (31.01.10 23:45) [34]
Зато авто обфускация кода при использование xor и зубодробильных выражений на порядок выше!
← →
Юрий Зотов © (2010-01-31 23:50) [36]Когда я вижу, что XOR дает ниболее простую конструкцию, то без тени сомнения XOR и применяю. Правда, за всю многолетнюю практику такое случалось всего лишь несколько раз, но если уж встретилось - то без тени сомнения.
И тоже считаю, что:
- xor ничем не хуже других логических операций;
- программист операции с xor понимать обязан.
← →
Anatoly Podgoretsky © (2010-01-31 23:50) [37]Ты обсуждаем вполне реальный код и утверждения, которые не подтвердились, по крайней мере на моем процессоре. Ассемблерный код почти одинаковый CMP/XOR
← →
Кто б сомневался © (2010-02-01 00:13) [38]
> Простейшия проверка показала резкий выигрыш "CMP" при сравнение
> на 2 миллиардах иттераций. XOR в три раза медленнее.
ну да, только там еще был запущен SR и плюс Макафи и куча остальных прог. И плюс винда со своей поточной каруселью.
Насколько я помню, cmp выполняется за 3 такта, xor за 2 или за один. Вот только книжку не могу найти.
Обычно в книгах по асму в конце пишут за сколько тактов выполняется команда на x86 - у кого есть посмотрите.
← →
Игорь Шевченко © (2010-02-01 00:18) [39]Юрий Зотов © (31.01.10 23:50) [36]
> И тоже считаю, что:
> - xor ничем не хуже других логических операций;
> - программист операции с xor понимать обязан.
прокомментируй высказывание оратора в [8], "круче выглядит".
Заодно можно прокомментировать следующие части кода:var
Literal: Boolean;
....
if IsLiteral then
begin
Literal := Literal xor True;
....
end;
...
else if IsLiteral then Literal := Literal xor True;while (P^ <> #0) and not (Negate xor (UpCase(P^) in CharSet^)) do Inc(P);
← →
xayam © (2010-02-01 00:18) [40]
> Anatoly Podgoretsky © (31.01.10 23:45) [34]
xor - 6984
cmp - 2468
Страницы: 1 2 3 4 вся ветка
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.085 c