Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.058 c
15-1268689777
Германн
2010-03-16 00:49
2010.08.27
Build Events в опциях проекта.


2-1269100790
Hikos
2010-03-20 18:59
2010.08.27
Не удаетя в базе выделить поля с определенным значением.


15-1275574670
Сергей
2010-06-03 18:17
2010.08.27
вирус в Дельфи


15-1266417633
Kerk
2010-02-17 17:40
2010.08.27
Сурков, замруководителя администрации президента, о модернизации


15-1271933235
Den
2010-04-22 14:47
2010.08.27
Процессы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский