Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оптимизация на низком уровне 
:(
    Опции темы
Stern87
  Дата 18.6.2009, 04:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 27.11.2007
Где: Украина

Репутация: нет
Всего: нет



Загорелся переводом проектов с Delphi (работаю в Delphi 7) на С++ (работаю в С++ Builder 6).
И к своему удивлению обнаружил, что алгоритмы выполняются в среднем на 20% медленее, чем на Delphi.
На Delphi использую доп. библиотеки такие как FastMM4, FastMove, FastCode. Это библиотеки, которые заменяют часть стандартных функций на их оптимизированные asm-аналоги. Без них, безусловно, Delphi будет далеко позади от С++.

Но интересует, есть ли соответствующие или похожие библиотеки для проектов на С++.
И, если можно, приведите дополнительные рекомендации по тонкой оптимизации кода С.

Огромное спасибо.
PM WWW ICQ Skype   Вверх
mrbrooks
Дата 18.6.2009, 08:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Stern87 @  18.6.2009,  04:21 Найти цитируемый пост)
Но интересует, есть ли соответствующие или похожие библиотеки для проектов на С++.

А что конкретно эти дельфяцкие библы делают? 


Цитата(Stern87 @  18.6.2009,  04:21 Найти цитируемый пост)
И, если можно, приведите дополнительные рекомендации по тонкой оптимизации кода С.

О какой оптимизации идет речь? Все что нужно оптимизирует компилятор, с галочкой в настройках.
PM MAIL   Вверх
Stern87
Дата 18.6.2009, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 27.11.2007
Где: Украина

Репутация: нет
Всего: нет



Цитата(mrbrooks @ 18.6.2009,  07:09)
А что конкретно эти дельфяцкие библы делают?
Отвечу цитированием вступления этого сайта
Цитата
The Fastcode project provides highly optimized functions for the Delphi community. Functions are faster versions of Delphi runtime library functions, VCL functions or functions meant as extensions for these. The project is running on a volunteer basis.

Functions can be written in assembler and use all the modern instruction sets, MMX, SSE, SSE2, SSE3, 3DNOW and 3DNOW+. We provide functions optimized for all modern processors and also versions that will run at all older processors. On the library page there are units available with all functions (currently more than 300) to download for free.
По сути там открыто много соревнований по совершенствованию тех или иных функций.
Главный портал проекта

Цитата(mrbrooks @ 18.6.2009,  07:09)
О какой оптимизации идет речь? Все что нужно оптимизирует компилятор, с галочкой в настройках.
Это да. Вот только "Speed" у меня вызывает Access Violation, а в остальном ускорения (завершения выполнения алгоритма) не наблюдается.
PM WWW ICQ Skype   Вверх
W4FhLF
Дата 19.6.2009, 05:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Ты выбрал древний компилятор С++, не соответствующий стандарту, который вообще ничего оптимизировать не умеет. И чего ты ждёшь? Юзай компилятор от MS или Intel, плюс нужно учитывать специфику проекта, если у тебя там большие объёмы данных в памяти, значит оптимизировать работу с памятью, применять алгоритмы с меньшим временем работы(сортировка, поиск, перестановка), продумать возможность распараллеливания алгоритма, если программа будет использоваться на среднем декстопе, то в этом есть смысл, т.к. почти везде 2х ядерные процы. И только потом уже можно думать над оптимизацией кода как такового. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
mrbrooks
Дата 19.6.2009, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Stern87, влом по ссылкам ползти - нет что бы тут в кратце описать.  smile 
А это:
Цитата

The Fastcode project provides highly optimized functions for the Delphi community. Functions are faster versions of Delphi runtime library functions, VCL functions or functions meant as extensions for these. The project is running on a volunteer basis.

Functions can be written in assembler and use all the modern instruction sets, MMX, SSE, SSE2, SSE3, 3DNOW and 3DNOW+. We provide functions optimized for all modern processors and also versions that will run at all older processors. On the library page there are units available with all functions (currently more than 300) to download for free.

просто декларация намерений. Типа какие мы кайфовые пацаны. Ничего конкретного.

W4FhLF, вы убийца дебилдера  smile Конечно можно спорить, отсылать к С++ Builder 2009, где ситуация, мягко говоря иная по сравнению с шестой версией, но это уже скатимся к холивару. Билдер заточен для некоторых известных задач, и заточен хорошо. К сожалению - этого не понимают новички - и пишут на нем все подряд. И чОООрт знает знает как.
PM MAIL   Вверх
Alca
Дата 19.6.2009, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Цитата

Юзай компилятор от MS или Intel

Stern87, а ты сделай три проекта Delphi, С++Builder, Visual C++ с теми функциями, которые ты хочешь использовать и замерь скорость исполнения кода. Тогда все вопросы отпадут сами собой.


--------------------
PM WWW ICQ Skype Jabber   Вверх
mrbrooks
Дата 19.6.2009, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Alca @  19.6.2009,  09:04 Найти цитируемый пост)
Visual C++ с теми функциями, которые ты хочешь использовать 

ага. я представляю, как автор будет прикручивать к студии 
Цитата(Stern87 @  18.6.2009,  04:21 Найти цитируемый пост)
доп. библиотеки такие как FastMM4, FastMove, FastCode
 и предвкушаю результат.

PM MAIL   Вверх
Alca
Дата 19.6.2009, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Цитата

Visual C++ с теми функциями, которые ты хочешь использовать 

Я имею ввиду  CRT-шные

Добавлено через 1 минуту и 55 секунд
Цитата

Functions are faster versions of Delphi runtime library functions


Добавлено через 14 минут и 35 секунд
mrbrooks, пусть сравнит аналоги CRT-шных функуций в Delphi, С++Builder, Visual C++. 




--------------------
PM WWW ICQ Skype Jabber   Вверх
Stern87
Дата 19.6.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 27.11.2007
Где: Украина

Репутация: нет
Всего: нет



Ребята, спасибо за ответы.

Я вас правильно понял: для начала неплохо бы перейти от СррВ6 на СррВ2009?
PM WWW ICQ Skype   Вверх
mrbrooks
Дата 19.6.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Stern87 @  19.6.2009,  14:08 Найти цитируемый пост)
Я вас правильно понял: для начала неплохо бы перейти от СррВ6 на СррВ2009? 

однозначно smile 
PM MAIL   Вверх
Stern87
Дата 20.6.2009, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 27.11.2007
Где: Украина

Репутация: нет
Всего: нет



Был у меня под рукой CppB2007. Решил всё проверить на нём.
В итоге только сильнее разочаровался.
Вместо (к примеру) 700 секунд на выполнение затрачивается около 1100 (В настройках был "Speed", без него чуть-чуть больше) smile
PM WWW ICQ Skype   Вверх
W4FhLF
Дата 21.6.2009, 06:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Есть много способов оптимизировать программу по скорости и смена компилятора с переписыванием пожалуй самый нерациональный и наименее эффективный. Поэтому, не тем путём ты пошёл. Хотя Борланд всё равно ацтой в этом плане) 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Stern87
Дата 22.6.2009, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 27.11.2007
Где: Украина

Репутация: нет
Всего: нет



Хорошо конечно. Но что таки тогда делать мне? Конкретно.
PM WWW ICQ Skype   Вверх
dumb
Дата 22.6.2009, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Цитата(Stern87 @  22.6.2009,  01:33 Найти цитируемый пост)
Но что таки тогда делать мне? Конкретно. 

для конкретного ответа не хватает конкретики в вопросе. либо показывай код, либо рассказывай подробно, что он, собственно, делает и как.
PM MAIL   Вверх
Stern87
Дата 22.6.2009, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 27.11.2007
Где: Украина

Репутация: нет
Всего: нет



Ух. Ну как мне привести код всех своих проектов??

Скажите, раз Borland C++ херня, то на чём кодить?
PM WWW ICQ Skype   Вверх
W4FhLF
Дата 22.6.2009, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Stern87, существуют такие программы, называются профайлеры. Начни с них. Грубо говоря, они позволяют понять из-за чего твоя программа работает медленно. Согласно правилу Парето, 80% времени занимают 20% кода, а чаще это соотношение ещё более контрастно. Т.е. зачем тебе оптимизировать всю программу, если 95% времени тратится на какой-нибудь один алгоритм или цикл или на запись/чтение HDD(в этом случае вообще никакие переписывания и компиляторы помочь не могут)? Вот эту часть и нужно оптимизировать(это называется bottleneck). И чтобы понять где bottleneck твоей программы расположен, тебе нужен профайлер, ибо опыта маловато судя по всему.  


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
mrbrooks
Дата 22.6.2009, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



ИМХО автор страдает излишним максимализмом к своему программному обеспечению. Как я понимаю его категорически не устраивает код который генерит сам Билдер - дык пусть пишет на WinAPI и затем оценит отношение затраченное время/скорость работы не включая свой собственный плод бессонных ночей. Т.к. непонятно, что делает автор в итоге,рекомендовать  что либо смысла не вижу.
PM MAIL   Вверх
Stern87
Дата 23.6.2009, 03:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 27.11.2007
Где: Украина

Репутация: нет
Всего: нет



W4FhLF, а какие профайлеры можно использовать? Я в среде С++ действительно новенький. Но хочу его изучить достаточно глубоко.
Основы изучил и перевёл первый проект с Delphi на С++, а он оказался медленее работать стал...
Какие посоветуете профайлеры использовать с CppB2007?
PM WWW ICQ Skype   Вверх
ksili
Дата 23.6.2009, 06:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 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.

К сожалению, профайлеров, встраивающихся в Билдер какой-либо версии, я не знаю.
Если кто-то может ещё указать профайлеры, пишите - буду рад почитать.


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
kemiisto
  Дата 23.6.2009, 06:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



Цитата(Stern87 @  18.6.2009,  02:21 Найти цитируемый пост)
Загорелся переводом проектов с Delphi (работаю в Delphi 7) на С++ (работаю в С++ Builder 6).

 smile А что эт ты так загорелся? Мотивация то какая?

Цитата(Stern87 @  19.6.2009,  12:08 Найти цитируемый пост)
Я вас правильно понял: для начала неплохо бы перейти от СррВ6 на СррВ2009?

Для начала, наверное, язык нужно изучить как следует. И тут какая-нить фраза типа, на C++ гораздо больше возможностей написать неэффективный код. По себе знаю: год прошёл, а ###код остался. =)

Цитата(Stern87 @  22.6.2009,  00:42 Найти цитируемый пост)
Скажите, раз Borland C++ херня, то на чём кодить? 
 
Слово Borland - лишнее! smile Ну, раз уж ты спросил:
  • Какой-нить Refined C++ (Java, Python, C#). По мне, C# - лучший из худших, хотя Python не видел... smile И до кучи к C# попробуй F#. Если мозг выдержит, то...
  • Ada - расхожая фраза, что "это не сложность большой помойки, а сложность часового механизма", видимо, в какой-то мере, положение дел отражает.
  • Oberon (Component Pascal) - наше всё! smile



--------------------
PM MAIL WWW GTalk Jabber   Вверх
mrbrooks
Дата 23.6.2009, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(kemiisto @  23.6.2009,  06:55 Найти цитируемый пост)
Oberon (Component Pascal) - наше всё!

ваше все.

опять доблестные дельфяцкие парни правду матку рубят. камрады у вас есть свой собственный раздел - или вам уже там тесно?   smile 
PM MAIL   Вверх
Alca
Дата 23.6.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Цитата

Скажите, раз Borland C++ херня, то на чём кодить?

Под винду - MS Visual Studio (у нее компилер круче) 

Это сообщение отредактировал(а) Alca - 23.6.2009, 13:01


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 25.6.2009, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50





--------------------
PM WWW ICQ Skype Jabber   Вверх
Stern87
Дата 25.6.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 27.11.2007
Где: Украина

Репутация: нет
Всего: нет



Alca, Спасибо!
PM WWW ICQ Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1273 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.