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

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

К вопрсу о скорости


Immortal_ ©   (2003-02-09 01:12:00) 

В моей программе идет сравнение элементов массива со строками посимвольно, используя два вложенных цикла. При этом достигается определенная скорость. При подключении оптимизированного System.pas скорость падает примерно в 1,5 раза. Означает ли это что юнит оптимизирован на размер в ущерб скорости, или я опять что то не правильно делаю?

с уважением Immortal.


Kladov   (2003-02-09 17:39:00) [1]

UseDelphiMemoryManager
Моя замена system оптимизирована по размеру, а не по скорости.


Immortal_   (2003-02-09 12:58:00) [2]

Я дико извиняюсь, скорость падает только если запускать из-под IDE. Если откомпилить, а потом запускать, то скорость не изменяется.
Еще раз Sorry.


Immortal_   (2003-02-09 12:46:00) [3]

Я беру модуль, предлагаемый Владимиром Кладовым как замену стандартному в KOL приложениях:
// KOL version of System unit for Delphi6.
// September, 2001
// (C) by Kladov Vladimir

Достаточно в Tools - Environment options – Library поставить путь к нему на первое место и он подключится в замен стандартного, равно как и другие юниты, предлагаемые для замены стандартных.

Win и Dos – Большие константные массивы, Str – Стринг, примерно 200 кб.

var
count,x,y,Index: Integer;
begin
Result := "";
count:=length(Str);
prg1.MaxProgress:= Count;
for x:=1 to count do
begin
index:=-1;
for y:=Low(Win) to High(Win) do
if Win[y] = Str[x] then
begin
Index:=y;
Break;
end;
if Index=-1 then Result:=Result+Str[x]
else Result:=Result+Dos[Index];
prg1.Progress:= x;
end;

О скорости можно судить по прогресс бару, отсюда и вопрос…


Gandalf   (2003-02-09 10:58:00) [4]


> При этом достигается определенная скорость. При подключении
> оптимизированного System.pas скорость падает примерно в
> 1,5 раза.


Речь идет о замене SysLibs? Или просто перекомпилировал проект с оптимизацией? И для конкретики код бы узнать. Судя по описанию что-то типа:

for i:=0 to ... do
for j:=0 to ... do
Massiv[i,j]:=Strs[i,j];

Так?


SPeller   (2003-02-09 04:54:00) [5]


> При подключении оптимизированного System.pas скорость падает
> примерно в 1,5 раза

Это как? Этот модуль всегда сам подключается по умолчанию. Или вы берёте левый System.pas и подключаете uses system? Так чтоли?


Yrtimd   (2003-02-09 01:38:00) [6]

Советую сравнивать не производительность всего цикла, а его отдельных этапов (операций). Так с большей вероятностью можно установить причину задержки.


Наверх

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