Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.02.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.018 c
3-15507
bambina
2003-01-20 16:34
2003.02.06
kak dobavit novuyu zapis v tablicu Paradox?


14-15923
bis
2003-01-20 10:36
2003.02.06
И это называется поиск???


3-15440
Pat
2003-01-17 08:24
2003.02.06
Резервное копирование таблицы


7-15958
Олег0267
2002-11-30 18:50
2003.02.06
Как рабодать с портом IrDA?


6-15804
Deep
2002-12-12 01:29
2003.02.06
работа с сокетами





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский