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

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

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

> inc(m,..) или m := m + .., в чем разница ?
сообщение
Сообщение #1


поиск
****

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

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


в чем разница ?

спасибо


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Учиться, учиться еще раз учиться
***

Группа: Пользователи
Сообщений: 158
Пол: Мужской
Реальное имя: Яшар

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


эта тема мне очень знакома wink.gif ... когда мы готовились к олимпиаде в нашей команде возник вопрос о разницах этих функций !help.gif . ну мы долго копались 1.gif и в конце обнаружили что i:=i+1; работает быстрее respect.gif чем inc(i); на FP 2.2.0. по моему это главное различие yes2.gif


--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(Bard @ 14.02.2008 7:00) *
в конце обнаружили что i:=i+1; работает быстрее respect.gif чем inc(i); на FP 2.2.0.

А теперь - внимание, вопрос... Имеем программу:
var i: integer;

begin
i := 0;
writeln(i);
inc(i);
writeln(i);
i := i + 1;
writeln(i);
end.

и ее трансляцию на ассемблер (FPC 2.2.0 - Win32, Options -> Compiler -> Assembler -> List Source, и смотрим s-файл):
# [6] inc(i);
movl U_P$PROGRAM_I,%eax
addl $1,%eax
jno .Lj17
call FPC_OVERFLOW
.Lj17:
movl %eax,U_P$PROGRAM_I
# Register eax,ecx,edx allocated
.stabn 68,0,7,.Ll5 - _main
.Ll5:
# [7] writeln(i);
#
# [8] i := i + 1;
movl U_P$PROGRAM_I,%eax
addl $1,%eax
jno .Lj30
call FPC_OVERFLOW
.Lj30:
movl %eax,U_P$PROGRAM_I
# Register eax,ecx,edx allocated
.stabn 68,0,9,.Ll7 - _main
.Ll7:
# [9] writeln(i);

Как может inc работать медленнее при идентичных кодах? То, что на TP 7 Inc дает прирост в скорости более 20% - было, по-моему тестовые программы до сих пор лежат в FAQ-е.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





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