Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2013, 23:22   #21
winhttp
Пользователь
 
Регистрация: 29.07.2012
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
Так что вопрос к winhttp: в каких условиях сравнивать?
конечно же с оптимизацией. я компиллировал с ключами -s -O3 -Os, но результаты не меняются. вопрос - как вообще программу оптимизировать, чтобы она работала не медленнее чем та, которая написана на c#?
Цитата:
это же языки, всё равно, что говорить, что русский быстрее английского. Разницу в производительности дают реализации (компиляторы, интерпретаторы) и прямые руки программиста.
не совсем удачное сравнение. я бы больше сравнил их как легковая и грузовая машина. каждый для своих задач. насчет рук - перепишите код на си из первого поста, чтобы работал шустрее , чем тот, который на c#.
winhttp вне форума Ответить с цитированием
Старый 18.02.2013, 23:38   #22
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

С++ который компиль берется?

+ для шарпа вообще правильнее бы учесть и время работы JIT(который способен оптимизировать код под текущуюмашину)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.02.2013, 01:03   #23
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от winhttp Посмотреть сообщение
не совсем удачное сравнение. я бы больше сравнил их как легковая и грузовая машина. каждый для своих задач.
Напротив, сами языки не имеют привязки к скорости. Они лишь абстрагируют нас от машины, уровень этой абстракции задаёт потенциал автоматической оптимизации, чем сильнее абстрагирован от машины язык, тем выше его потенциал оптимизации. Тем не менее, в конечном итоге, реализация этого потенциала зависит целиком от реализации транслятора/интерпретатора/виртуальной машины. Взять тот же JavaScript, сейчас его производительность нередко сравнивают с C, хотя раньше о таком и подумать не могли. А ведь язык всё тот же.
Цитата:
Сообщение от winhttp Посмотреть сообщение
насчет рук - перепишите код на си из первого поста, чтобы работал шустрее , чем тот, который на c#.
Легко: http://ideone.com/knupM5
Результаты вычислений совпадают. C++ более низкоуровневый язык, потому большинство оптимизаций, которые могут быть реализованы для абстрактных языков, здесь нужно описывать вручную. Но ещё раз, это ничего нам не говорит о мифической "скорости" языка. Если компилировать программы на этих языках под одну и ту же платформу (например .NET), то разницу вообще едва ли удастся обнаружить.
netrino вне форума Ответить с цитированием
Старый 19.02.2013, 13:52   #24
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 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.
ROD вне форума Ответить с цитированием
Старый 19.02.2013, 20:32   #25
winhttp
Пользователь
 
Регистрация: 29.07.2012
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
С++ который компиль берется?

+ для шарпа вообще правильнее бы учесть и время работы JIT(который способен оптимизировать код под текущуюмашину)
gcc. насчет оптимизации под конкретную машину - получается, что си уступает сишарпу? я всегда думал, что си быстрее именно потому, что работает "напрямую" с процессором, в отличии от сишарпа и других, код которых (байт код) выполняет виртуальная машина, которая уж затем обращается к процессору. получается как бы - что виртуальная машина как "посредник"
winhttp вне форума Ответить с цитированием
Старый 19.02.2013, 20:37   #26
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
в отличии от сишарпа и других, код которых (байт код) выполняет виртуальная машина, которая уж затем обращается к процессору. получается как бы - что виртуальная машина как "посредник"
уже давно не применяется прямое интерпритирование кода, почитайте про JIT.
Цитата:
Кроме того, опустив такую вещь, как mono, я замечу, что вся библиотека Math реализована в самом .NET и, в моем понимании, частью языка не является, а скорее какой-то внешней "библиотекой" (я бы поставил .NET в один ряд с Windows API, но это мое личное ИМХО), и используется во многих языках, например Visual Basic.NET, и, даже, для C++, если вы в нем используете .NET (что многие делают, когда пишут программы в VisualStudio, особенно когда не полностью понимают, что делают).
ну в Си это тоже math.h, а не оператор языка.
Цитата:
gcc.
попробуйте студию.
во вторых, неизвестна реализация библиотек.
думаю дело в них, а не в языках.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 19.02.2013 в 21:05.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.02.2013, 20:52   #27
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ну в Си это тоже math.h, а не оператор языка.
Ну как бы math.h впоследствии становится вашей программой, а всякие няшки из .NET - вне программы (если я ничего не путаю)

Цитата:
Сообщение от winhttp Посмотреть сообщение
gcc. насчет оптимизации под конкретную машину - получается, что си уступает сишарпу? я всегда думал, что си быстрее именно потому, что работает "напрямую" с процессором, в отличии от сишарпа и других, код которых (байт код) выполняет виртуальная машина, которая уж затем обращается к процессору. получается как бы - что виртуальная машина как "посредник"

Как я уже сказал выше - все зависит от реализации функции вычисления синуса. Мы ведь не знаем как много членов последовательности учитывается в C++ и в C#
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 19.02.2013 в 20:56.
ROD вне форума Ответить с цитированием
Старый 19.02.2013, 21:04   #28
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Ну как бы math.h впоследствии становится вашей программой, а всякие няшки из .NET - вне программы (если я ничего не путаю)
math.h это лишь заголовочник, кода он не содержит.
код сам может быть в dll, зависит от применяемого компилятора и настроек.

если шарп применяет таблицы для вычисления тригонометрии, то оно логичнее хранить их в ДЛЛ.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в чем ошибка ?? 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