Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

Inc, Dec.   Найти похожие ветки 

 
Elec3C ©   (2007-10-17 17:16) [0]

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


 
Правильный_Вася   (2007-10-17 17:18) [1]

скоростью


 
Германн ©   (2007-10-17 17:25) [2]


> Или ещё чем-то?
>

Отсутствием Range Checking


 
Reindeer Moss Eater ©   (2007-10-17 17:26) [3]

... However, Inc generates optimized code and .....


 
Правильный_Вася   (2007-10-17 17:58) [4]


> Германн ©   (17.10.07 17:25) [2]

всегда или при выключенной опции компилятора?


 
Elec3C ©   (2007-10-17 18:02) [5]

Всем спасибо за инфу.


 
Германн ©   (2007-10-17 18:08) [6]


> Правильный_Вася   (17.10.07 17:58) [4]
>
>

Всегда. От опций не зависит.


 
begin...end ©   (2007-10-17 18:08) [7]

Скорость выполнения вариантов кода I := I + 1 и Inc(I) одинакова.


 
Германн ©   (2007-10-17 18:13) [8]


> begin...end ©   (17.10.07 18:08) [7]

Но справка по этим процедурам не менялась испокон веков :-)


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


> Германн ©   (17.10.07 18:13) [8]

Справка по процедуре INC в Д6 практически слово в слово повторяет справку из ТП7 :-)


 
ASoft   (2007-10-17 18:54) [10]


> Elec3C ©   (17.10.07 17:16)
Можете мне объяснить, чем отличается Inc(i) от i := i + 1...

может, типом переменной i? :-)


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

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


 
Anatoly Podgoretsky ©   (2007-10-17 20:23) [12]

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


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

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

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


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

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

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


 
palva ©   (2007-10-17 21:53) [15]

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


 
Dance   (2007-10-17 22:10) [16]

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


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

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

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


 
@!!ex ©   (2007-10-17 22:32) [18]

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


 
Anatoly Podgoretsky ©   (2007-10-17 22:34) [19]

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

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


 
palva ©   (2007-10-17 23:04) [20]


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

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


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

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

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


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


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

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


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

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

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

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

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


 
@!!ex ©   (2007-10-18 11:23) [24]

> [23] Dance   (18.10.07 06:36)

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


 
Dimaxx ©   (2007-10-18 11:55) [25]

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


 
DrPass ©   (2007-10-18 13:16) [26]


> Dance   (18.10.07 06:36) [23]

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


 
Dance   (2007-10-18 18:34) [27]

> Dance   (18.10.07 06:36) [23]

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


 
Anatoly Podgoretsky ©   (2007-10-18 20:08) [28]

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

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


 
palva ©   (2007-10-18 20:53) [29]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.02 c
2-1192793681
Neo
2007-10-19 15:34
2007.11.11
как вывести результат поиска по базе в Edit


2-1192439470
Lamer666
2007-10-15 13:11
2007.11.11
Как обработать событие ONCLICK программно созданной кнопки?


8-1169034939
Vovan #2
2007-01-17 14:55
2007.11.11
Работа со звуком в Delphi


2-1192957926
sydenis
2007-10-21 13:12
2007.11.11
исключения в bpl


8-1169127491
namor
2007-01-18 16:38
2007.11.11
Музыка в Делфи