Код
program l;
c,i:byte;
begin
c:=0;
for i:=1 to 255 do
inc(c);
readln;
end.
и
Код
program l;
c,i:byte;
begin
c:=0;
for i:=1 to 255 do
c:=c+1;
readln;
end.
Разницы же никакой так зачем же создали процедуру inc :fire:
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Inc Vs +1 |
-DB- |
Сообщение
#1
|
Гость |
Код program l; c,i:byte; begin c:=0; for i:=1 to 255 do inc(c); readln; end. и Код program l; c,i:byte; begin c:=0; for i:=1 to 255 do c:=c+1; readln; end. Разницы же никакой так зачем же создали процедуру inc :fire: |
volvo |
Сообщение
#2
|
Гость |
Практически никакой. Только выполняется Inc быстрее...
Код var s1, s2: string; begin readln(s1); s2 := s1; end; Код var s1, s2: string; i: byte; begin s2 := ''; readln(s1); for i := 1 to length(s1) do s2 := s2 + s1[i]; end; Разницы тоже никакой. Какой способ выберешь? |
-DB- |
Сообщение
#3
|
Гость |
Конечно же первый;
============= Значит лучше использовать inc и dec чем +1 и -1 |
xds |
Сообщение
#4
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
Inc не является процедурой в полном смысле этого слова. Это языковая конструкция (как и Dec, Write/Writeln, Read/Readln, Succ, Pred и т. п. - большинство "процедур" фиктивного модуля "System").
Причины большей эффективности Inc и Dec перед обычным присвоением заключаются в следующем: для конструкции "c := c + 1;" будет сгенерирован код Код mov al,c xor ah,ah inc ax mov c,al в то время как для "Inc(с);" - всего лишь одна инструкция: Код inc byte ptr c Разница очевидна: c Inc мы не замачиваем - мы просто стираем -------------------- The idiots are winning.
|
Флогримм |
Сообщение
#5
|
Бывалый Группа: Пользователи Сообщений: 253 Пол: Мужской Репутация: 4 |
Значит лучше использовать inc и dec чем +1 и -1
Цитата Значит лучше использовать inc и dec чем +1 и -1 причем не только для +1, -1!! Цитата Inc (процедура) ----------------- Увеличивает значение переменной. Объявление: Procedure Inc(Var X [ ; N : Longint ] ); Режим: Windows, Real, Protected Замечания: Параметр X - переменная перечислимого типа или переменная типа PChar, если допускается расширенный синтаксис, а N - выражение целочисленного типа. Значение X увеличивается на 1, если параметр N не определен, или на N, если праметр N определен, то есть Inc(X) соответствует X:=X+1, а Inc(X, N) соответствует X:=X+N. С помощью Inc генерируется более оптимизированный код, особенно полезный в плотном цикле. Обрати внимание на -> Цитата Значение X увеличивается на 1, если параметр N не определен, или на N, если праметр N определен, то есть Inc(X) соответствует X:=X+1, а Inc(X, N) соответствует X:=X+N. ... анлагочно с dec'ом Но не забывай, что N может не может быть вефественным, только целым! -------------------- Я не буду жить с этой злобой внутри / Я не буду частью смертельной цепи / Я не буду потребителем твоих идей / Я не буду никогда убивать зверей (Unconform)
|
GoodWind |
Сообщение
#6
|
Автооответчик Группа: Пользователи Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: 16 |
Цитата Но не забывай, что N может не может быть вефественным, только целым! и не обязательно положительным ;) -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
xds |
Сообщение
#7
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
Для "Dec(c, n);" и "Inc(c, n);" причины прироста производительности имеют аналогичный характер.
Достаточно забавно наблюдать за поведением оптимизатора BP (как, впрочем, и за работой любого другого "чёрного ящика"): он "догадывается" заменить "ax + 1" на "inc ax", "ax + 2" на "inc ax; inc ax", "ax + 7" на "add ax,7" и т. п, но, встретившись с операндом длиной 8 бит, вместо "inc al" честно делает "xor ah,ah" и сводит задачу к уже решённой. Сообщение отредактировано: xds - -------------------- The idiots are winning.
|
Текстовая версия | 23.04.2024 19:44 |