Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2012, 14:04   #1
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
Радость Скорость выполнения программы написанной на Delphi

Всем привет!
Я хотел бы узнать влияют ли операторы типа Begin...End на скорость выполнения программы?
К примеру код записан так:
Будет ли здесь требоваться больше времени на выполнение кода чем в нижнем примере?
Код:
If Edit1.Text = '123' Then
Begin
Caption:='123';
End;
...

If Edit1.Text = '123' Then
Caption:='123';
И влияют ли они на размер программы?
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 12.01.2012, 14:23   #2
lowercase
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 88
По умолчанию

не знаю влияют ли, но применять begin end есть смысл тогда, когда у тебя в блоке операторов есть 2 и более ооператора. а если один оператор то правельнее будет опустить операторные скобки.
когда только один оператор пишим так:
Код:
If Edit1.Text = '123' Then
  Caption:='123';
когда несколько, то пишим так:
Код:
If Edit1.Text = '123' Then begin
  Caption:='123';
  Caption2:='234';
end;
ну и на всякий случай:
Код:
If Edit1.Text = '123' Then
  Caption:='123'; // этот блок выполнится при условии Edit1.Text = '123'
Caption2:='234'; // а этот уже не относится к ветвению. он выполнится в любом случае. то есть, по вложености он идет какбы на равне с ветвением
зы: по моему не деолжны влиять, всетаки оптимизация это неотъемлевая часть разработки програм. а к компиляторам это строго настрого должно относится впервую очередь. я думаю что мозгатые дяди в борланде позаботилиь об этом

Последний раз редактировалось lowercase; 12.01.2012 в 14:36.
lowercase вне форума Ответить с цитированием
Старый 12.01.2012, 15:15   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

По-крайней мере длина exe не поменялась от того, что добавил или убрал такие Begin...End
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.01.2012, 16:17   #4
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Мне кажется что не влияет, потому что компилятор убирает то, в чем нет необходимости
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 12.01.2012, 19:03   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

операторная скобка это способ обьединения операторов в один(условно).
сами по себе они кода не несут(исключение begin end файла проекта и begin end процедур и методов)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.01.2012, 19:04   #6
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
Лампочка

Теперь прояснилась ситуация. Благодарю всех за помощь!
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 12.01.2012, 20:50   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Из тойже оперы.. чтобы узнать, сколько тиков процессор отдаёт на выполнение какого-либо алгоритма я делаю так:
Код:
var
 tStart,tEnd:Cardinal;
 tStart:=GetTickCount;
 //тут алгоритм, чью скорость мы измеряем
 tEnd:=GetTickCount-tStart; 
 ShowMessage('Код работал: '+IntToStr(tEnd)+' ms');
Человек_Борща вне форума Ответить с цитированием
Старый 12.01.2012, 21:02   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

как я говорил это все зависит от нагружености системы.
далее GetTickCount не тики возвращает, а миллисекунды.(в коде верно, а в самом сообщении нет)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.01.2012, 16:55   #9
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Спасибо!
Ещё уточню GetTickCount показывает сколько прошло времени от последнего включения компьютера.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 13.01.2012, 22:08   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это да, но именно миллисекунды, а не тики.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение Version Info во время выполнения программы на Delphi Stim777 Общие вопросы Delphi 3 11.01.2011 20:24
Доработка программы для выполнения Лабороторных работ. Delphi MinZ Фриланс 1 19.12.2010 23:49
Скорость выполнения программы avd Общие вопросы Delphi 3 29.10.2010 17:44
Delphi, вмешиваемся в процесс выполнения программы edmynt Помощь студентам 3 06.04.2010 15:58