Главная страница
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.027 c
3-15486
SeRZh
2003-01-20 18:18
2003.02.06
Новичок


4-16007
K_O_T
2002-12-25 00:41
2003.02.06
Создание ContextMenuHandlers


14-15842
igorr
2003-01-22 12:37
2003.02.06
Названия символов


14-15884
MAN-IN-RED
2003-01-19 15:51
2003.02.06
Как часто вы используете комментарии в программах?


1-15535
REA
2003-01-28 12:02
2003.02.06
Нужно ли выгружать BPL