Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.05 c
2-1192274364
apic
2007-10-13 15:19
2007.11.11
Рисование


15-1191922029
zdm
2007-10-09 13:27
2007.11.11
Установка фокуса в DbGrid


2-1192969619
Lebedev
2007-10-21 16:26
2007.11.11
Caption RadioGroup должен переходить на новую строку.


2-1192724860
malyar
2007-10-18 20:27
2007.11.11
excel + sql


15-1191581507
s_t_d
2007-10-05 14:51
2007.11.11
BIOS для MotherBoard VERTEX M1 94V-0





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский