![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Inc, Dec.
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).
И тогда можно будет анализировать что быстрее, оптимальней и т.д.
А в справке многое можно написать, да еще забыть поменять, если что-то реально изменилось :))