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

Вниз

Какая комбинация быстрее   Найти похожие ветки 

 
Anton   (2003-01-27 15:25) [0]

if UpperCase(Name)="OD" then a:=1;
if UpperCase(Name)="RC" then a:=2;
if UpperCase(Name)="OA" then a:=3;

или

if (Name="OD") or (Name="od") or (Name="Od") or (Name="oD") then a:=1;
if (Name="RC") or (Name="rc") or (Name="Rc") or (Name="rC") then a:=2;
if (Name="OA") or (Name="oa") or (Name="Oa") or (Name="oA") then a:=3;


 
MBo ©   (2003-01-27 15:29) [1]

прогони 100000 раз в цикле, и узнаешь


 
Anatoly Podgoretsky ©   (2003-01-27 15:30) [2]

Секундомер у тебя есть?


 
Anton   (2003-01-27 15:30) [3]

Я серьезно


 
bis ©   (2003-01-27 15:31) [4]

еще быстрее посимвольно разветвлять и даже через case


 
gek ©   (2003-01-27 15:33) [5]

В принципе
это зависит от второго выражения
т.е. максимум проверок там 4, а минимум 1 в одной строке.

В первом случае два действия: Upper и проверка на равенство



 
Anatoly Podgoretsky ©   (2003-01-27 15:36) [6]

А еще серьезнее


 
Юрий Зотов ©   (2003-01-27 15:44) [7]

Заодно проверьте и такой вариант.

const
Pattern = "ODRCOA";
var
P: integer;
begin
if Length(Name) = 2 then
begin
P := Pos(UpperCase(Name), Pattern);
if P in [1, 3, 5] then A := (P + 1) shr 2
end
end;


 
Anton   (2003-01-27 15:47) [8]

публикую результаты измерений
начало 1 блока0,655696608796296
конец 1 блока0,655697152777778
начало 2 блока0,655697152777778
конец 2 блока0,655697870370371
отсюда вывод 1 вариант быстрее в 1.3 раза


 
Anatoly Podgoretsky ©   (2003-01-27 15:57) [9]

Что это за измерение, цикл надо увеличить хотя бы в 100 раз
Name должен быть хотя бы "OA", а лучше "хх"

Код совсем не оптимальный, надо использовать else if


 
Anatoly Podgoretsky ©   (2003-01-27 16:00) [10]

Приведи код теста, явно не хорошо сделан.


 
Anton   (2003-01-27 16:09) [11]

да я немножко ошибся


 
han_malign ©   (2003-01-27 16:34) [12]

((Length(Name)=2) and (Name[1]in["O","o"])and(Name[2]in["D","d"]))

а можно и так:
var _name: shortstring;
begin
_name:=Uppercase(Name)+#0;
case dword(_name[0]) of
$00444F03{OD}: a=1;
$00524303{RC}: a=2;
$00414F03{OA}: a=3;
end;{case}
:)))))))



Страницы: 1 вся ветка

Текущий архив: 2003.02.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
3-15487
VitGun
2003-01-20 18:18
2003.02.06
Номер строки в DBGrid


14-15917
Evgen_Iam
2003-01-21 10:51
2003.02.06
Как правильно сохранить копию проекта


14-15817
KGB
2003-01-17 18:51
2003.02.06
Давно хотел спросить , но стеснялся


14-15856
pave1
2003-01-15 13:53
2003.02.06
Работа с Excel`em


1-15589
Valeris
2003-01-27 10:30
2003.02.06
Имя пользователя