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

Вниз

Задумался   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.029 c
2-1160716862
yel
2006-10-13 09:21
2006.10.29
Memo с картинками


2-1160926032
Аноним
2006-10-15 19:27
2006.10.29
Извините за тупой вопрос, но...


15-1160397329
Layner
2006-10-09 16:35
2006.10.29
Подскажите где есть форумы математиков желающих заработать


15-1160483356
KitsumVI
2006-10-10 16:29
2006.10.29
Исходники к книге Delphi и технология COM


1-1158359971
maxistent
2006-09-16 02:39
2006.10.29
GetProcessMemoryInfo