![]() |
|
Модераторы: bsa |
![]()
|
|
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Привет. Больше не буду доставать с теми задачами, это последний раз.
Просто интересует, как можно сделать сверхбыстро такую элементарную операцию, как сложение. Вот самая первая "задача", надо просто сложить два числа. Интересен стал такой момент. В лучших решениях этой задачи находятся практически все на Pascal, делают они это за 0.001 сек. На С++ такой код
делает это за 0.015 сек. Как можно побить рекорд Паскаля без ассемблера? |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
На Си
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Так и есть.
Отчего же так? Может, сейчас у них просто сервер загружен гораздо больше, чем тогда. Все те паскалевские результаты 2000-2004 в основном. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Сложение целых чисел осуществляется одной машинной командой add. Причём оба аргумента в регистрах. Померить "время" выполнения одной машинной команды на современных процессорах невозможно. Если верить мануалам от Intel'a то такое сложение выполняется за 1 такт. При этом, допустим, аргументы в регистры читаются из памяти, если эта память не лежит в кеше первого уровня, то операция чтения может занимать от сотен до тысяч тактов. Поэтому любые арифметические операции на фоне чтения из памяти есть капля в море, не говоря уже о выводе на экран.
Это сообщение отредактировал(а) W4FhLF - 3.7.2009, 12:40 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
Riddik, там время работы программы а не время работы сложения
математика говорит, что если Y/X=0, то X+Y=X в данном случае X - время работы не-сложения, Y- время работы сложения очевидно проги на паскале грузятся быстрее |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Приведенный С++ код занимается вводом/выводом. Собственно сложение там занимает вообще незаметное время. Так что минимизировать надо именно ввод/вывод
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
интересно, какая там ОС,
и можно ли юзать #pragma comment(linker,"/entry:main") |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
И как объяснить 49-ю, 52-ю, 53-ю и т.д. строчки? Причём, ИМХО, именно 49-ый должен быть лучшим, т.к. памяти меньше всего расходовал. Может действительно ввод-вывод оптимизировали? Это сообщение отредактировал(а) Riddik - 3.7.2009, 13:13 |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
http://acm.timus.ru/help.aspx?topic=cpp |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
zim22, я про ОС спросил, а не про компилятор
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
я думал, что этот компилятор только под Windows. ошибался. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |