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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2011, 12:15   #1
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию Эффективность C++ и Delphi

Доброго времени суток!
Купил книгу "Язык С++" Б.Страуструп. Так вот, там есть пример тривиального калькулятора с парсером, работающим по принципу рекурсивного спуска.
В общем, я реализовал этот пример в консольном приложении на C++, а потом решил переложить эту фичу на делфи и сравнить производительность функций CalcIt.
Создал цикл из 6000 вызовов функции CalcIt и засек время GetTickCount'ом.
Результат:
На делфях: 6000 итераций выполняется за ~40 мс (Delphi 2007)
На C++: если использовать string: ~90мс; stringstream: 110мс в релиз конфигурации (VS 2008).

Почему такая разница? Ведь код на с++ должен работать быстрее!

В прикрепленном файле код на C++ и на делфи... На делфи писался грубо и быстро, поэтому не судите строго)
Вложения
Тип файла: zip calc.zip (3.2 Кб, 20 просмотров)
Hottabych вне форума Ответить с цитированием
Старый 05.01.2011, 12:37   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Ведь код на с++ должен работать быстрее!
это кто это вам сказал что должен?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.01.2011, 13:04   #3
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
По умолчанию

Тестил Delphi и Builder - одинаково, правда давно и свой пример был, где-то около 1 000 000 итераций.
Про VS сказать ничего не могу. Builder поэтому не стал изучать
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 05.01.2011, 13:19   #4
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

Цитата:
это кто это вам сказал что должен?
Популярность этого языка...
Дело в том, что я пишу программу для восстановления данных и в некоторых случаях нужны очень быстрые алгоритмы, но слышал, что делфи в этом не очень эффективен...
Впрочем, теперь не знаю, буду тестировать...
Hottabych вне форума Ответить с цитированием
Старый 05.01.2011, 13:23   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Популярность этого языка...
которая больше связана с тем что его больше популязируют(то есть так сказать рекламируют)
да и МС за него(ну я всмысле про студию)

многое зависит от рук, а так же от задач

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

Последний раз редактировалось Пепел Феникса; 05.01.2011 в 13:31.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.01.2011, 13:36   #6
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

C++ никому ничего не должен. Это во-первых.
А во-вторых, вы уверены что в студии проверяли release версию, а не отладочную?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 05.01.2011, 15:21   #7
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

Уверен. Я ее "перепостроил" в релиз-конфигурации и запускал как отдельное приложение...
Все... решено... дело в студии или винде... В релиз конфигурации, при Run-time library = Multi-threaded (/MT) 47 мс.
Кстати, когда в настройках проекта Configuration Properties -> C/C++ -> Run-time library стоит Multi-threaded Debug DLL (/MDd) (по умолчанию) программы не запускаются ("Не было запущено, поскольку оно некорректно настроено"), хотя раньше все было нормально....
И все-таки, на делфях быстрее работает)...

Последний раз редактировалось Hottabych; 05.01.2011 в 15:25.
Hottabych вне форума Ответить с цитированием
Старый 05.01.2011, 15:23   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ДЛЛ от студии потеряли?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.01.2011, 15:53   #9
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

А фиг его знает, наверное... Когда всякие Run-time Libraries ставил
Hottabych вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 666dart666 Помощь студентам 11 04.11.2010 17:57
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism savva-paladin Софт 18 02.10.2010 20:24
Как можно улучшить эффективность и качество ПП? Evgenii Помощь студентам 5 29.01.2009 16:22
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54