Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скорость цикла, ... 
:(
    Опции темы
gepard
Дата 11.3.2004, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



А вот вопрос:
Что быстрее:
Код

...
for (int i=0;i<2;i++)
    printf("%d\n", i);
...

или
Код

    printf("%d\n", 0);
    printf("%d\n", 1);

confused.gif


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
gepard
Дата 11.3.2004, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Что быстрее выполниться? Просто два действия, след. одно за другим или одно действие описанное в цикле?


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
shedon
Дата 11.3.2004, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



Второй вариант всегда будет быстрее


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
gepard
Дата 11.3.2004, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Почему? Ведь по сути, цикл - много кратное повторение одних и тех же действий. А то что он будет быстрее ты сам проверял?


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
shedon
Дата 11.3.2004, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



а ты посмотри дизассемблированный код, с циклом и без.
Код с циклом
Код

; for (int i=0;i<2;i++)
004F0FA6  mov         dword ptr [i],0
004F0FAD  jmp         004F0FB8
004F0FAF  mov         eax,dword ptr [i]
004F0FB2  add         eax,1
004F0FB5  mov         dword ptr [i],eax
004F0FB8  cmp         dword ptr [i],2
004F0FBC  jge         004F0FD1
;  printf("%d\n", i);
004F0FBE  mov         eax,dword ptr [i]
004F0FC1  push        eax  
004F0FC2  push        offset string "%d\n" (665F94h)
004F0FC7  call        @ILT+45195(_printf) (4C6090h)
004F0FCC  add         esp,8
004F0FCF  jmp         004F0FAF

Без цикла
Код

;printf("%d\n", 0);
004F0FA6  push        0    
004F0FA8  push        offset string "%d\n" (665F94h)
004F0FAD  call        @ILT+45195(_printf) (4C6090h)
004F0FB2  add         esp,8
;printf("%d\n", 1);
004F0FB5  push        1    
004F0FB7  push        offset string "%d\n" (665F94h)
004F0FBC  call        @ILT+45195(_printf) (4C6090h)
004F0FC1  add         esp,8

много времени уходит на инструкции jmp 004F0FAF и
mov eax,dword ptr [i]
add eax,1

Это сообщение отредактировал(а) shedon - 12.3.2004, 11:43


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
gepard
Дата 12.3.2004, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Всё, теперь не буду юзать циклы...
smile.gif


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 12.3.2004, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Цитата
Всё, теперь не буду юзать циклы...

Угу, а как выполнять по N итераций там где их количество неизвестно wink.gif ?


--------------------
user posted image
PM MAIL WWW   Вверх
gepard
Дата 12.3.2004, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



2 mr.DUDA:
Шуток не понимаешь ;)


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
ElectricalStorm
Дата 13.3.2004, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: нет
Всего: 9



1000 принтов будет всегда медленне цикла работать


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
gepard
Дата 13.3.2004, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Цитата
1000 принтов будет всегда медленне цикла работать

Почему?


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
cardinal
Дата 13.3.2004, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Я думаю, что ElectricalStorm ошибается. Объяснение написано выше.



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
ElectricalStorm
Дата 15.3.2004, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: нет
Всего: 9



Я думаю, что ElectricalStorm ошибается. Объяснение написано выше.

А что нам подсказывает эксперемент ? (С)





--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
gepard
Дата 16.3.2004, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Цитата
А что нам подсказывает эксперемент?

А что он вам подсказывает?


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
cardinal
Дата 16.3.2004, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Цитата
А что он вам подсказывает?

Да ElectricalStorm с одной стороны прав - эксперимент показывает обратное, но
Цитата
1000 принтов будет всегда медленне цикла работать

это смотря как написать. Если посмотреть в листинг, то там иногда такое понаписано, что страшно становится. Конечная оптимизация всегда происходит в виде ассемблерных вставок, а там если все подчистить, то получится, что 1000 printf'ов подряд будут работать быстрее чем этот цикл. Разница во времени показанная profiler'ом является невиликой и поэтому на это можно в этом случае забить, а вообще общее правило такое:
- если известно кол-во повторов цикла, то цикл надо разворачивать.
Только в том случае, если это сделано можно добится более быстрого выполнения задачи переписав все на ассемблере сэкономив на jmp'аx и счетчике.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
shedon
Дата 16.3.2004, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



при измерение времени нужно не забыть отключить оптимизацию


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0612 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.