Форум: "Прочее";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
ВнизЗадумался Найти похожие ветки
← →
ArtemESC © (2006-10-09 15:35) [0]Что лучше Inc(x) или x := x + 1, ведь Inc(x) - это же процедура, значит происходит вызов (также, команды возврата), что усложняет код на выходе, а x := x + 1 это всего лишь оператор...
← →
Карелин Артем © (2006-10-09 15:36) [1]Inc(x)
← →
Тульский © (2006-10-09 15:36) [2]
> Задумался
Не парься, будь счастлив.
← →
clickmaker © (2006-10-09 15:38) [3]
> Inc(x) - это же процедура
нет. Это т.н. compiler magic, транслируется прямо в asm
← →
Сергей М. © (2006-10-09 15:39) [4]Inc(X) corresponds to the statement X := X + 1, and Inc(X, N) corresponds to the statement X := X + N. However, Inc generates optimized code and is especially useful in tight loops.
← →
Gydvin © (2006-10-09 15:39) [5]Баян
← →
Игорь Шевченко © (2006-10-09 15:39) [6]Тульский © (09.10.06 15:36) [2]
Присоединяюсь к высказыванию. Если человек не находит себе другого занятия, кроме того, как постить на форум поток совего неотформатированного сознания, то лучший совет ему - не париться.
← →
Sandman29 © (2006-10-09 16:03) [7]С точки зрения философии: если зачем-то вводятся новые синтаксисы, значит, они эффективнее. x +=N эффективнее x := X + N, Inc(x) эффективнее x += 1
← →
ArtemESC © (2006-10-09 16:05) [8]Удалено модератором
Примечание: Выражения выбираем
← →
clickmaker © (2006-10-09 16:05) [9]
> x +=N эффективнее x := X + N
чем?
← →
default © (2006-10-09 16:06) [10]
> x +=N эффективнее x := X + N,
не эффективнее, а лаконичнее(чтобы имя переменной два раза не повторять, оно может быть длинным)
> Inc(x) эффективнее x += 1
в дельфи нет операторов типа +=, потому там Inc и ввели
← →
Sandman29 © (2006-10-09 16:17) [11]clickmaker © (09.10.06 16:05) [9]
Например,
X[I].elem[5] += 15;
default © (09.10.06 16:06) [10]
Я в курсе, чего в Delphi нет. Ты мне лучше скажи, почему Div не ввели вместо X\=N и Mult вместо X*=N :)
← →
Ketmar © (2006-10-09 16:19) [12]>[11] Sandman29(c) 9-Oct-2006, 16:17
>X[I].elem[5] += 15;
ну, писать меньше. а умный компилятор все равно скэширует значение в регистре, так что скорость пофигу. %-)
← →
default © (2006-10-09 16:20) [13]Sandman29 © (09.10.06 16:17) [11]
хз, есть понятия инкремент и декремент, понятия навроде мультикремент и дивкремента нету:)
← →
clickmaker © (2006-10-09 16:21) [14]При выключенной оптимизации компилятор что Inc(A), что A := A + 1 приведет к
MOV <addr>, A
INC DWORD PTR <addr>
а при включенной к
INC EBX
← →
Rouse_ © (2006-10-09 16:21) [15]
> Ты мне лучше скажи, почему Div не ввели вместо X\=N и Mult
> вместо X*=N :)
Не стали, чтобы хоть в чем-то у сишников было преимущество... Такое обьяснение пойдет? :)
← →
Sandman29 © (2006-10-09 16:23) [16]clickmaker © (09.10.06 16:21) [14]
Ну и?
Rouse_ © (09.10.06 16:21) [15]
Ты знал :)
← →
jack128 © (2006-10-09 16:25) [17]Sandman29 © (09.10.06 16:03) [7]
если зачем-то вводятся новые синтаксисы, значит, они эффективнее. x +=N эффективнее x := X + N, Inc(x) эффективнее x += 1
возможно когда то в глубокой древности так и было... но не сейчас
← →
clickmaker © (2006-10-09 16:29) [18]
> [16] Sandman29 © (09.10.06 16:23)
> clickmaker © (09.10.06 16:21) [14]
>
> Ну и?
дополнение к ответу на [0]
← →
Sandman29 © (2006-10-09 16:40) [19]clickmaker © (09.10.06 16:29) [18]
Тогда извиняюсь. Я почему-то подумал, что это мне. Мания величия, наверное :)
← →
clickmaker © (2006-10-09 16:50) [20]
> [11] Sandman29 © (09.10.06 16:17)
> clickmaker © (09.10.06 16:05) [9]
>
> Например,
>
> X[I].elem[5] += 15;
А это я, чессгря, не понял. В чем эффективность? В том, что программер меньше топчет клаву?
← →
Sandman29 © (2006-10-09 17:10) [21]clickmaker © (09.10.06 16:50) [20]
Адрес переменной будет подсчитан 1 раз, а не 2, как в
X[I].elem[5] := X[I].elem[5] + 15;
Да и программисту понятнее, не надо сравнивать левую и правую часть.
← →
Ketmar © (2006-10-09 17:12) [22]>[21] Sandman29(c) 9-Oct-2006, 17:10
>Адрес переменной будет подсчитан 1 раз, а не 2
ещё раз говорю: умный оптимизирующий компилятор и не станет считать адрес два раза. потому что умный. %-)
← →
Sandman29 © (2006-10-09 17:15) [23]Ketmar © (09.10.06 17:12) [22]
Умному компилятору и программу писать необязательно, достаточно построить пару UML диаграмм :)
← →
Ketmar © (2006-10-09 17:16) [24]>[23] Sandman29(c) 9-Oct-2006, 17:15
>достаточно построить пару UML диаграмм :)
это уже перебор. умный компилятор должен улавливать ещё не высказаные мысли. %-)
← →
clickmaker © (2006-10-10 11:56) [25]
> Адрес переменной будет подсчитан 1 раз, а не 2, как в
> X[I].elem[5] := X[I].elem[5] + 15;
на хрена ему два раза
ADD DWORD PTR [смещение], $0F
только и всего
← →
Sandman29 © (2006-10-10 12:50) [26]clickmaker © (10.10.06 11:56) [25]
Даже с выключенной оптимизацией?
← →
clickmaker © (2006-10-10 12:59) [27]
> [26] Sandman29 © (10.10.06 12:50)
открой CPU Window да посмотри
← →
Sandman29 © (2006-10-10 13:00) [28]clickmaker © (10.10.06 12:59) [27]
У меня нет Delphi 1.
← →
clickmaker © (2006-10-10 13:10) [29]
> [28] Sandman29 © (10.10.06 13:00)
причем тут Дельфи 1 ?
← →
Sandman29 © (2006-10-10 14:14) [30]clickmaker © (10.10.06 13:10) [29]
А шут его знает. я даже в 3 не могу найти CPU Window.
В общем, компилятор дельфи - "умный" как в [22]. Но произвольный компилятор не обязан быть таким умным, в то время как по спецификации C при выполнении += flhtc будет точно рассчитан только 1 раз.
← →
clickmaker © (2006-10-10 14:22) [31]
> А шут его знает. я даже в 3 не могу найти CPU Window
View - Debug Windows - CPU (это в 5-6). В 3-й не помню, наверно там же
← →
default © (2006-10-10 14:26) [32]или Ctrl+Alt+C
← →
Sandman29 © (2006-10-10 14:58) [33]Нет, в 3 нету.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.039 c