![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Какая комбинация быстрее
Anton © (2003-01-27 15:25:00)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;
han_malign (2003-01-27 16:34:00) [1]((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}
:)))))))
Anton (2003-01-27 16:09:00) [2]да я немножко ошибся
Anatoly Podgoretsky (2003-01-27 16:00:00) [3]Приведи код теста, явно не хорошо сделан.
Anatoly Podgoretsky (2003-01-27 15:57:00) [4]Что это за измерение, цикл надо увеличить хотя бы в 100 раз
Name должен быть хотя бы "OA", а лучше "хх"
Код совсем не оптимальный, надо использовать else if
Anton (2003-01-27 15:47:00) [5]публикую результаты измерений
начало 1 блока0,655696608796296
конец 1 блока0,655697152777778
начало 2 блока0,655697152777778
конец 2 блока0,655697870370371
отсюда вывод 1 вариант быстрее в 1.3 раза
Юрий Зотов (2003-01-27 15:44:00) [6]Заодно проверьте и такой вариант.
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;
Anatoly Podgoretsky (2003-01-27 15:36:00) [7]А еще серьезнее
gek (2003-01-27 15:33:00) [8]В принципе
это зависит от второго выражения
т.е. максимум проверок там 4, а минимум 1 в одной строке.
В первом случае два действия: Upper и проверка на равенство
bis (2003-01-27 15:31:00) [9]еще быстрее посимвольно разветвлять и даже через case
Anatoly Podgoretsky (2003-01-27 15:30:00) [10]Секундомер у тебя есть?
Anton (2003-01-27 15:30:00) [11]Я серьезно
MBo (2003-01-27 15:29:00) [12]прогони 100000 раз в цикле, и узнаешь