Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Как уменьшить такую конструкцию?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.055 c
2-1269519135
Влад
2010-03-25 15:12
2010.08.27
ActiveX


15-1275251381
Юрий
2010-05-31 00:29
2010.08.27
С днем рождения ! 31 мая 2010 понедельник


15-1269714022
Jeer
2010-03-27 21:20
2010.08.27
7-й чемпион мира по шахматам


2-1269717199
Studd
2010-03-27 22:13
2010.08.27
Алгоритм заполнения фигуры


15-1263763827
Юрий
2010-01-18 00:30
2010.08.27
С днем рождения ! 18 января 2010 понедельник