IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Влияние блока try на скорость, Особенно влияет содержимое блока except
TarasBer
сообщение 30.01.2010 17:43
Сообщение #1


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


По идее влиять не должно. Однако

program TestTry;

{$APPTYPE CONSOLE}

uses
Windows, Dialogs;

var
T: integer;
i: integer;

procedure Delay;
var
i: integer;
s: extended;
begin
try
s := sin(1);
except
ShowMessage('WTF?');
// ShowMessage('W T F ?');
Halt;
end;
end;

begin
T := GetTickCount;
while T = GetTickCount do;
T := GetTickCount;
for i := 0 to 9999999 do Delay;
i := GetTickCount - T;
WriteLn(i);
ReadLn;
end.


Все проверки убрал, отладчик выключил, оптимизацию включил.
В таком виде у меня выводит 2534-2544
Однако, если раскомментировать строчку со вторым сообщением, то он вдруг выводит 2834-2854.
Если добавить туда ещё строчку ShowMessage('W T F ?'), то он выведет 2613
Откуда берётся такая разница?
И как вообще устроен этот блок на самом деле?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
TarasBer
сообщение 30.01.2010 18:23
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Это компилируется на дельфе-семёрке, все проверки выключены, отладка выключена, отладчик тоже, оптимизация включена. Я и ctrl+alt+c нажимал, ничего такого необычного (по данной теме) не обнаружил. С одним показом сообщения и с 3 скорость примерно одна, а с двумя - другая. Я подобрал именно такие два сообщения, которые наиболее замедляют выполнение. Странно даже, что с 3 сообщениями это делается быстрее, чем с 2мя.
Если убрать часть except, будет 2601. Если убрать try, оставив синус, будет 2353, ну это может из-за того, что try совершает заменяет указатель на обработчик исключений, это требует немного времени.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 13.07.2025 18:06
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"