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

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

Inc, Dec.


Страницы:   1 2

Elec3C ©   (2007-10-17 17:16:00) 

Можете мне объяснить, чем отличается Inc(i) от i := i + 1 и
Dec(i) от i := i - 1; Скоростью выполнения или, может, красивостью?
P.S. Или ещё чем-то?


Dance   (2007-10-18 20:59:00) [1]

....palva ©   (18.10.07 20:53) [29].
Согласен, и поэтому в итоге две на вид разные функции, но выполняющие одну и ту же операцию будут переведены на машинный язык в одинаковом виде.


palva   (2007-10-18 20:53:00) [2]

Dance   (18.10.07 06:36) [23]
Я думаю, что проверка происходит на этапе компиляции. Если я напишу Inc для Extended-переменной, то произойдет ошибка компиляции, а до выполнения дело не дойдет.


Anatoly Podgoretsky   (2007-10-18 20:08:00) [3]

> Dimaxx  (18.10.2007 11:55:25)  [25]

Справка редко исправляется, старые сведения и ошибки часто гуляют с ТП


Dance   (2007-10-18 18:34:00) [4]

> Dance   (18.10.07 06:36) [23]

По этой причине Dimaxx ©   (18.10.07 11:55) [25] и дал ответ что касается высказывания насчет перечислимых типов.


DrPass   (2007-10-18 13:16:00) [5]


> Dance   (18.10.07 06:36) [23]

А как по-твоему программа в рантайме должна отличать, перечислимый тип или нет? Это задача компилятора


Dimaxx   (2007-10-18 11:55:00) [6]

Тоже в свое время читал о полезности Inc (более быстрый код). На деле оказалось, что и то, и другое генерирует один и тот же код.


@!!ex   (2007-10-18 11:23:00) [7]

> [23] Dance   (18.10.07 06:36)

Суть вопроса лишь в том, что надо посмотреть CPU Window и сравнить.
Я уже сравнил. А вы?


Dance   (2007-10-18 06:36:00) [8]

....palva ©   (17.10.07 23:04) [20]

Вопрос в том, в каком месте компилятор не пропускает выполнение inc для неперечислимых данных. На этапе компиляции или во времени выполнения самого приложения. Если в первом варианте, то здесь проводится что то типа проверки синтаксиса кода (типа правила языка когда то придуманные и утверждены) и компилятор не пропускает такое выражение. И при правильности код в любом случае будет генерароваться так как следует.
А во втором случае, проверка кода на правильность впихнется в сам исполняемый код, тогда в любом случае будет замедление кода.

Не говоря уж о том, что для выполнения машинных команд процессору требуется выполнение определенного количества тактов. И это тоже надо учитываеть, если смотреть на быстродействие.

Суть вопроса была именно в этом.


Германн   (2007-10-18 03:17:00) [9]


> Anatoly Podgoretsky ©   (17.10.07 22:34) [19]
>
> > @!!ex  (17.10.2007 22:32:18)  [18]
>
> Это не плохо, это менталитет.

Да это менталитет. А у меня особенно. Inc в Intel-овских ассеблерах весьма этому способствует.


@!!ex   (2007-10-17 23:08:00) [10]

> [19] Anatoly Podgoretsky ©   (17.10.07 22:34)

Мда... абсолютно идеентичны...


palva   (2007-10-17 23:04:00) [11]


> Dance   (17.10.07 22:10) [16]
> Тогда :)) если в первом приближении смотреть, то должно
> быть выполнено условие сравнения (так как компилятор не
> пропускает), что может снизить скорость работы :))
> Я правильно понял?

Честно говоря, я не понял вопроса.


Anatoly Podgoretsky   (2007-10-17 22:34:00) [12]

> @!!ex  (17.10.2007 22:32:18)  [18]

Это не плохо, это менталитет. Посмотри CPU Window


@!!ex   (2007-10-17 22:32:00) [13]

Хм... А у меня почти весь код через inc и dec.... для сложения и вычитания целых чисел.... Нигде не используется обычное сложение и вычитание.. Это сильно плохо?


Anatoly Podgoretsky   (2007-10-17 22:28:00) [14]

> palva  (17.10.2007 21:53:15)  [15]

Зато сработает 3.1 + 0.6
Все свое место, за все время я ни разу не использовал INC


Dance   (2007-10-17 22:10:00) [15]

palva ©   (17.10.07 21:53) [15]
Тогда :)) если в первом приближении смотреть, то должно быть выполнено условие сравнения (так как компилятор не пропускает), что может снизить скорость работы :))
Я правильно понял?


palva   (2007-10-17 21:53:00) [16]

Inc допустимо писать для любых перечислимых типов. i := i + 1 для типов, где определена операция сложения. Например для булевского b допустимо написать Inc(b). Но b := b + 1 компилятор не пропустит.


Anatoly Podgoretsky   (2007-10-17 21:35:00) [17]

> La-La  (17.10.2007 20:34:13)  [13]

Когда посмотрит, то возможно очень удивится.


La-La   (2007-10-17 20:34:00) [18]

>>>Anatoly Podgoretsky ©   (17.10.07 20:23) [12]

Вот именно, когда будет видна реализация данных функций при прочих равных условиях, тогда можно будет судить об оптимальности и скорости работы каждой из них.


Anatoly Podgoretsky   (2007-10-17 20:23:00) [19]

CPU window доступно любому разработчику.


La-La   (2007-10-17 20:18:00) [20]

Вероятно нужно смотреть машинный код отдельно для I:=I+1 и Inc(I).
И тогда можно будет анализировать что быстрее, оптимальней и т.д.
А в справке многое можно написать, да еще забыть поменять, если что-то реально изменилось :))


Страницы:   1 2

Наверх

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