| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Сверх скорость |
| Автор: Riddik 3.7.2009, 11:47 | ||
| Привет. Больше не буду доставать с теми задачами, это последний раз. Просто интересует, как можно сделать сверхбыстро такую элементарную операцию, как сложение. Вот самая первая http://acm.timus.ru/problem.aspx?space=1&num=1000, надо просто сложить два числа. Интересен стал такой момент. В http://acm.timus.ru/rating.aspx?space=1&num=1000 этой задачи находятся практически все на Pascal, делают они это за 0.001 сек. На С++ такой код
делает это за 0.015 сек. Как можно побить рекорд Паскаля без ассемблера? |
| Автор: andrew_121 3.7.2009, 11:52 |
| На Си |
| Автор: azesmcar 3.7.2009, 12:01 | ||
По моему даже с ассемблером никак
вот это проверь |
| Автор: Riddik 3.7.2009, 12:04 |
| Так и есть. Отчего же так? Может, сейчас у них просто сервер загружен гораздо больше, чем тогда. Все те паскалевские результаты 2000-2004 в основном. |
| Автор: W4FhLF 3.7.2009, 12:15 |
| Сложение целых чисел осуществляется одной машинной командой add. Причём оба аргумента в регистрах. Померить "время" выполнения одной машинной команды на современных процессорах невозможно. Если верить мануалам от Intel'a то такое сложение выполняется за 1 такт. При этом, допустим, аргументы в регистры читаются из памяти, если эта память не лежит в кеше первого уровня, то операция чтения может занимать от сотен до тысяч тактов. Поэтому любые арифметические операции на фоне чтения из памяти есть капля в море, не говоря уже о выводе на экран. |
| Автор: GoldFinch 3.7.2009, 12:16 |
| Riddik, там время работы программы а не время работы сложения математика говорит, что если Y/X=0, то X+Y=X в данном случае X - время работы не-сложения, Y- время работы сложения очевидно проги на паскале грузятся быстрее |
| Автор: xvr 3.7.2009, 12:16 |
| Приведенный С++ код занимается вводом/выводом. Собственно сложение там занимает вообще незаметное время. Так что минимизировать надо именно ввод/вывод |
| Автор: GoldFinch 3.7.2009, 12:31 |
| интересно, какая там ОС, и можно ли юзать #pragma comment(linker,"/entry:main") |
| Автор: Riddik 3.7.2009, 13:04 |
И как объяснить 49-ю, 52-ю, 53-ю и т.д. строчки? Причём, ИМХО, именно 49-ый должен быть лучшим, т.к. памяти меньше всего расходовал. Может действительно ввод-вывод оптимизировали? |
| Автор: zim22 3.7.2009, 13:09 | ||
http://acm.timus.ru/help.aspx?topic=cpp |
| Автор: GoldFinch 3.7.2009, 15:59 |
| zim22, я про ОС спросил, а не про компилятор |
| Автор: zim22 3.7.2009, 16:17 |
я думал, что этот компилятор только под Windows. ошибался. |