Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

какой код будет меньше нагружать систему [D7, XP]


redlord ©   (2006-03-06 21:52:00) 

всем привет
народ подскажите какой код будет меньше нагружать систему в цикличесском вызове

if copy(s,10,3) = '123'
или
if pos(s,'123') > 0


redlord   (2006-03-08 23:49:00) [1]

на скоко мне помнится для posex надо дополнительный модуль цеплять
а это уже минус
а следователно if s[10]= '1' наверно будет оптимальным решением  

завтра протестирую все три варианта и отпишус о резултатах


sniknik   (2006-03-08 11:32:00) [2]

и кстати если позиция известно то pos можно заменить на posex и сравнение делать на = 10 (будет по смыслу одинаково с copy работать, и чуть быстрее чем с pos)


sniknik   (2006-03-08 11:26:00) [3]

> Коля тут несколько пролетел. :))) Имхо.
с чего это? разница налицо, и это явно показано этим кодом.

> но в моем случае "123"  всегда в позиции 10 или этого сочетания нет вообще
если строка строгого формата то быстрее, имхо, (без выделений памяти под копию, копирований, поисков) будет просто сравнить
if (s[10]= '1') and (s[11]= '2') and (s[12]= '3') then ...
(без "имхо" это надо проверять, тестить на большом цикле)


Германн   (2006-03-08 03:13:00) [4]

sniknik ©   (07.03.06 11:57) [4]
Коля тут несколько пролетел. :))) Имхо.

А по сабжу, вариант "if copy(s,10,3) = '123'" имеет конкретные параметры и считывает и сравнивает считанное.
А вариант "if pos(s,'123') > 0" сначала будет искать. А как долго - неизвестно!


redlord   (2006-03-08 00:48:00) [5]

to sniknik
то что первое условие никогда не выполнится я знаю
но в моем случае "123"  всегда в позиции 10 или этого сочетания нет вообще


sniknik   (2006-03-07 11:57:00) [6]

s:= 'if copy(s,10,3) = ''123''';

if copy(s,10,3) = '123' then ShowMessage('copy');

if pos(s,'123') > 0 then ShowMessage('pos');

проверь.


redlord   (2006-03-07 11:47:00) [7]

to anatoly
а можно по подробнее в каких случаях ипри каких условиях ?


Anatoly Podgoretsky   (2006-03-06 22:24:00) [8]

Результаты этих двух строчек могут серьезно различаться


antonn   (2006-03-06 21:55:00) [9]

второй


Наверх

Титульная страница Поиск, карта сайта Написать письмо