Форум: "Начинающим";
Текущий архив: 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