|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.02.2013, 23:22 | #21 | |
Пользователь
Регистрация: 29.07.2012
Сообщений: 98
|
конечно же с оптимизацией. я компиллировал с ключами -s -O3 -Os, но результаты не меняются. вопрос - как вообще программу оптимизировать, чтобы она работала не медленнее чем та, которая написана на c#?
Цитата:
|
|
18.02.2013, 23:38 | #22 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
С++ который компиль берется?
+ для шарпа вообще правильнее бы учесть и время работы JIT(который способен оптимизировать код под текущуюмашину) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
19.02.2013, 01:03 | #23 | ||
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Цитата:
Цитата:
Результаты вычислений совпадают. C++ более низкоуровневый язык, потому большинство оптимизаций, которые могут быть реализованы для абстрактных языков, здесь нужно описывать вручную. Но ещё раз, это ничего нам не говорит о мифической "скорости" языка. Если компилировать программы на этих языках под одну и ту же платформу (например .NET), то разницу вообще едва ли удастся обнаружить. |
||
19.02.2013, 13:52 | #24 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Не могу сказать, что измерения времени точны - запустите один и тот же код несколько раз - время выполнения различается. (иногда почти на секунду, т.е. результат туда-сюда гуляет процентов на 20, это просто ахрененная погрешность)
Кроме того там не родной "додиез", а mono - вообще сторонняя реализация. Кроме того, что бы однозначно сказать о скорости - надо тестировать на различных машинах. Ну а кроме того, пример с синусом не удачен, поскольку тут может сильно отличаться ко-во итераций (там же в ряд Тейлора разложено?), сразу замечу, что округление при вычислении и при выводе это две большие разницы! Кратко резюмирую - данный пример демонстрирует разницу в скорости расчета синуса. Поскольку формула синуса это тупо умножения и деления, то собственно на них и проверим: C++ http://ideone.com/8J6C7U C# http://ideone.com/z6vAbD Обратите внимание на разницу во времени. Почти в два раза. А теперь усложним задачу, максимальное значение i увеличим в 10 раз: http://ideone.com/MKelVJ http://ideone.com/UAtYNE Разница во времени расчета примерно того же порядка. Кроме того, опустив такую вещь, как mono, я замечу, что вся библиотека Math реализована в самом .NET и, в моем понимании, частью языка не является, а скорее какой-то внешней "библиотекой" (я бы поставил .NET в один ряд с Windows API, но это мое личное ИМХО), и используется во многих языках, например Visual Basic.NET, и, даже, для C++, если вы в нем используете .NET (что многие делают, когда пишут программы в VisualStudio, особенно когда не полностью понимают, что делают). P.S. В данном посте я не делаю выводов о производительности С++ и C#, а лишь пытаюсь продемонстрировать несостоятельность представленного в первом посте теста.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 19.02.2013 в 14:42. |
19.02.2013, 20:32 | #25 |
Пользователь
Регистрация: 29.07.2012
Сообщений: 98
|
gcc. насчет оптимизации под конкретную машину - получается, что си уступает сишарпу? я всегда думал, что си быстрее именно потому, что работает "напрямую" с процессором, в отличии от сишарпа и других, код которых (байт код) выполняет виртуальная машина, которая уж затем обращается к процессору. получается как бы - что виртуальная машина как "посредник"
|
19.02.2013, 20:37 | #26 | |||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
Цитата:
во вторых, неизвестна реализация библиотек. думаю дело в них, а не в языках. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 19.02.2013 в 21:05. |
|||
19.02.2013, 20:52 | #27 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Ну как бы math.h впоследствии становится вашей программой, а всякие няшки из .NET - вне программы (если я ничего не путаю)
Цитата:
Как я уже сказал выше - все зависит от реализации функции вычисления синуса. Мы ведь не знаем как много членов последовательности учитывается в C++ и в C#
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 19.02.2013 в 20:56. |
|
19.02.2013, 21:04 | #28 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
код сам может быть в dll, зависит от применяемого компилятора и настроек. если шарп применяет таблицы для вычисления тригонометрии, то оно логичнее хранить их в ДЛЛ. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
в чем ошибка ?? | SuperHuman | Общие вопросы C/C++ | 3 | 04.06.2012 21:30 |
Почему Excel 2010 выполняет поиск гораздо медленнее чем Excel 2003 | Sprat | Microsoft Office Excel | 1 | 25.10.2011 05:34 |
Во общем надо написать программу "дождь"...и чтоб некоторые капельки двигались быстрее, другие медленнее. | zzz6 | Помощь студентам | 6 | 07.07.2011 10:57 |
В Excel 2010 макрос медленнее в 3 раза чем в 2007 | Владимир. | Microsoft Office Excel | 12 | 22.05.2010 18:24 |
В чем ошибка? | delphyok | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 24.02.2009 23:33 |