IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Inc Vs +1
сообщение
Сообщение #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:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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;

Разницы тоже никакой. Какой способ выберешь?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Конечно же первый;

=============
Значит лучше использовать inc и dec чем +1 и -1
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 мы не замачиваем - мы просто стираем lol.gif


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Автооответчик
*****

Группа: Пользователи
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


Цитата
Но не забывай, что N может не может быть вефественным, только целым!

и не обязательно положительным ;)


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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" и сводит задачу к уже решённой. lol.gif

Сообщение отредактировано: xds -


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.04.2024 19:44
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name