![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
TarasBer |
![]()
Сообщение
#1
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
По идее влиять не должно. Однако
Все проверки убрал, отладчик выключил, оптимизацию включил. В таком виде у меня выводит 2534-2544 Однако, если раскомментировать строчку со вторым сообщением, то он вдруг выводит 2834-2854. Если добавить туда ещё строчку ShowMessage('W T F ?'), то он выведет 2613 Откуда берётся такая разница? И как вообще устроен этот блок на самом деле? -------------------- |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Очень интересно... Вообще-то если ошибки не было, то содержимое блока except пропускается:
RSDN: Исключительные ситуации и надежное программирование Кстати, это все компилируется в Debug-е или в Release? Что, если ВООБЩЕ убрать блок try/except - это даст прирост скорости на твоем компиляторе? Я попробовал у себя добавить десяток строк ShowMessage('всякая фигня') - время выполнения нисколько не увеличилось. |
TarasBer |
![]()
Сообщение
#3
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Это компилируется на дельфе-семёрке, все проверки выключены, отладка выключена, отладчик тоже, оптимизация включена. Я и ctrl+alt+c нажимал, ничего такого необычного (по данной теме) не обнаружил. С одним показом сообщения и с 3 скорость примерно одна, а с двумя - другая. Я подобрал именно такие два сообщения, которые наиболее замедляют выполнение. Странно даже, что с 3 сообщениями это делается быстрее, чем с 2мя.
Если убрать часть except, будет 2601. Если убрать try, оставив синус, будет 2353, ну это может из-за того, что try совершает заменяет указатель на обработчик исключений, это требует немного времени. -------------------- |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата С одним показом сообщения и с 3 скорость примерно одна, а с двумя - другая. Да нет там показа, вот в чем проблема... Не было исключения - блок except проигнорировался... Если б был показ - то твоя программа тут же завершилась бы, ибо Halt находится там же...Кстати, проверил этот же код в FPC (заменив ShowMessage на Writeln)... Мало того, что абсолютно одинаковое поведение (время нисколько не увеличивается вне зависимости от числа "выводимых" строк), так еще и время одно и то же. Что там что тут: 410 |
TarasBer |
![]()
Сообщение
#5
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> Да нет там показа, вот в чем проблема...
Я понимаю. Вопрос в том, что само наличие там этой строчки почему-то влияет на скорость. -------------------- |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
А вот это как у тебя работает:
{$APPTYPE CONSOLE}? |
TarasBer |
![]()
Сообщение
#7
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Для трёх сообщений время не изменилось, для двух - уменьшилось с 2800 до 2600.
Странно, что никогда не вызывающийся код на что-то влияет. -------------------- |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата И как вообще устроен этот блок на самом деле? Вот что показывает Дельфийский дизассемблер (View->DebugWindows->CPU Windows->Disassembly) для кода:procedure Delay; Project1.dpr.13: begin А при добавлении второй строки: procedure Delay; код транслируется вот так: Project1.dpr.13: begin Что здесь может замедлять выполнение? В семерке есть возможность посмотреть на дизассемблированный код? Если есть, приведи, пожалуйста, эти два фрагмента... Сравнить хочется. |
TarasBer |
![]()
Сообщение
#9
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да я первым же делом ктрл+альт+с нажал.
Два часа заливал два рисунка. Который 2_втф - это без он е:ексепшон, а второй - с ним и с трёмя сообщениями. Эскизы прикрепленных изображений ![]() ![]() -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 12.07.2025 21:16 |