Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1160395203
mahab
2006-10-09 16:00
2006.10.29
WM_VSCROLL


3-1156855026
pic509
2006-08-29 16:37
2006.10.29
Как передать в Хранимую процедуру параметр=null


2-1160671437
pathfinder
2006-10-12 20:43
2006.10.29
Проблема с шифрованием файлов:(((


2-1160976272
Tab
2006-10-16 09:24
2006.10.29
Два вопроса по QReport


15-1160132726
Layner
2006-10-06 15:05
2006.10.29
Знает ли кто нибудь, почему в Win2003 с последними патчами





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский