![]() |
|
![]() ![]() ![]() |
|
Stern87 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 27.11.2007 Где: Украина Репутация: нет Всего: нет |
Загорелся переводом проектов с Delphi (работаю в Delphi 7) на С++ (работаю в С++ Builder 6).
И к своему удивлению обнаружил, что алгоритмы выполняются в среднем на 20% медленее, чем на Delphi. На Delphi использую доп. библиотеки такие как FastMM4, FastMove, FastCode. Это библиотеки, которые заменяют часть стандартных функций на их оптимизированные asm-аналоги. Без них, безусловно, Delphi будет далеко позади от С++. Но интересует, есть ли соответствующие или похожие библиотеки для проектов на С++. И, если можно, приведите дополнительные рекомендации по тонкой оптимизации кода С. Огромное спасибо. |
|||
|
||||
mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
А что конкретно эти дельфяцкие библы делают?
О какой оптимизации идет речь? Все что нужно оптимизирует компилятор, с галочкой в настройках. |
||||
|
|||||
Stern87 |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 27.11.2007 Где: Украина Репутация: нет Всего: нет |
Главный портал проекта
|
||||||
|
|||||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Ты выбрал древний компилятор С++, не соответствующий стандарту, который вообще ничего оптимизировать не умеет. И чего ты ждёшь? Юзай компилятор от MS или Intel, плюс нужно учитывать специфику проекта, если у тебя там большие объёмы данных в памяти, значит оптимизировать работу с памятью, применять алгоритмы с меньшим временем работы(сортировка, поиск, перестановка), продумать возможность распараллеливания алгоритма, если программа будет использоваться на среднем декстопе, то в этом есть смысл, т.к. почти везде 2х ядерные процы. И только потом уже можно думать над оптимизацией кода как такового.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Stern87, влом по ссылкам ползти - нет что бы тут в кратце описать.
![]() А это:
просто декларация намерений. Типа какие мы кайфовые пацаны. Ничего конкретного. W4FhLF, вы убийца дебилдера ![]() |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Stern87, а ты сделай три проекта Delphi, С++Builder, Visual C++ с теми функциями, которые ты хочешь использовать и замерь скорость исполнения кода. Тогда все вопросы отпадут сами собой. |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
Alca |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Я имею ввиду CRT-шные Добавлено через 1 минуту и 55 секунд
Добавлено через 14 минут и 35 секунд mrbrooks, пусть сравнит аналоги CRT-шных функуций в Delphi, С++Builder, Visual C++. |
||||
|
|||||
Stern87 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 27.11.2007 Где: Украина Репутация: нет Всего: нет |
Ребята, спасибо за ответы.
Я вас правильно понял: для начала неплохо бы перейти от СррВ6 на СррВ2009? |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
Stern87 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 27.11.2007 Где: Украина Репутация: нет Всего: нет |
Был у меня под рукой CppB2007. Решил всё проверить на нём.
В итоге только сильнее разочаровался. Вместо (к примеру) 700 секунд на выполнение затрачивается около 1100 (В настройках был "Speed", без него чуть-чуть больше) ![]() |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Есть много способов оптимизировать программу по скорости и смена компилятора с переписыванием пожалуй самый нерациональный и наименее эффективный. Поэтому, не тем путём ты пошёл. Хотя Борланд всё равно ацтой в этом плане)
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Stern87 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 27.11.2007 Где: Украина Репутация: нет Всего: нет |
Хорошо конечно. Но что таки тогда делать мне? Конкретно.
|
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
||||
|
||||
Stern87 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 27.11.2007 Где: Украина Репутация: нет Всего: нет |
Ух. Ну как мне привести код всех своих проектов??
Скажите, раз Borland C++ херня, то на чём кодить? |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Stern87, существуют такие программы, называются профайлеры. Начни с них. Грубо говоря, они позволяют понять из-за чего твоя программа работает медленно. Согласно правилу Парето, 80% времени занимают 20% кода, а чаще это соотношение ещё более контрастно. Т.е. зачем тебе оптимизировать всю программу, если 95% времени тратится на какой-нибудь один алгоритм или цикл или на запись/чтение HDD(в этом случае вообще никакие переписывания и компиляторы помочь не могут)? Вот эту часть и нужно оптимизировать(это называется bottleneck). И чтобы понять где bottleneck твоей программы расположен, тебе нужен профайлер, ибо опыта маловато судя по всему.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
ИМХО автор страдает излишним максимализмом к своему программному обеспечению. Как я понимаю его категорически не устраивает код который генерит сам Билдер - дык пусть пишет на WinAPI и затем оценит отношение затраченное время/скорость работы не включая свой собственный плод бессонных ночей. Т.к. непонятно, что делает автор в итоге,рекомендовать что либо смысла не вижу.
|
|||
|
||||
Stern87 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 27.11.2007 Где: Украина Репутация: нет Всего: нет |
W4FhLF, а какие профайлеры можно использовать? Я в среде С++ действительно новенький. Но хочу его изучить достаточно глубоко.
Основы изучил и перевёл первый проект с Delphi на С++, а он оказался медленее работать стал... Какие посоветуете профайлеры использовать с CppB2007? |
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Stern87, с профайлерами не всё так просто. Корректность их работы может зависеть от используемого процессора.
1) Исторически пожалуй, два самых основных профайлера для винды - AMD Code Analyst и Intel VTune. Изначально они работали только с "родными" процесорами. Сейчас вроде они работают на всех процах x86, но честно предупреждают - на не родном камне могу и гнать. Кроме того VTune нехило стОит. 2) Есть профайлер, встроенный в студию, но я что-то не смог его использовать, он мне написал, что к меня в проекте нет управляемого кода. Наверно ему надо, чтобы всё было в классах. В общем про него много сказать не могу. 3) Недавно появился такой продукт как Intel Parallel Studio, встраивающийся в MS VS и содержащий кроме прочих вкусностей ещё и профайлер. Продукт тоже платный, но можешь скачать месячный Evaluation. 4) Кроме того на сайте Intel можешь поискать и найти ещё и бесплатные утилиты, тоже связанные с замерами производительности. Например, IPTU - Intel® Performance Tuning Utility. К сожалению, профайлеров, встраивающихся в Билдер какой-либо версии, я не знаю. Если кто-то может ещё указать профайлеры, пишите - буду рад почитать. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: нет Всего: 160 |
![]()
Для начала, наверное, язык нужно изучить как следует. И тут какая-нить фраза типа, на C++ гораздо больше возможностей написать неэффективный код. По себе знаю: год прошёл, а ###код остался. =) Слово Borland - лишнее! ![]()
-------------------- |
||||
|
|||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Под винду - MS Visual Studio (у нее компилер круче) Это сообщение отредактировал(а) Alca - 23.6.2009, 13:01 |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
||||
|
||||
Stern87 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 27.11.2007 Где: Украина Репутация: нет Всего: нет |
Alca, Спасибо!
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |