Тема сообщения, конечно, немного сумбурная, но лучше сформулировать не смог
Ситуация такая.
Есть большой программный комплекс, состоящий из множества COM-модулей. Изначально все компилировалось на BCB5 (практически без оптимизации). В течении многих лет комплекс шлифовался во всех направлениях. Производительность была более менее приемлемая. Тут, в свете увядания любви к BCB, пересобрали модуль с сервисными COM-объектами на VC8 (speed-оптимизация по максимуму). Объекты из этого модуля юзаются практически повсеместно.
Ну дык вот. Производительность упала на глазах — раз в пять. Видно прямо при перерисовке окон (сделаны на BCB5) — отображаемые данные тащатся из объектов, обcлуживаются именно этим сервисным модулем, откомпилированным на VC8. Если этот модуль заново пересобрать на BCB5 — все нормально.
Модуль c GUI (собран на BCB5) компилируется со статической библиотекой.
Сервисный модуль всегда компилировался с использованием динамической библиотекой — сс3250mt.dll (BCB5) и MSVCP80.dll,MSVCR80.dll (VC8).
То есть, каждый модуль всегда жил со своей собственной кучей.
Я вот чего думаю. BCB5 юзает RW-STL, а VC8 — другую STL. Сдается мне главное различие в том, что в RW-STL basic_string юзает счетчики ссылок, а VC8-STL всегда копирует строки. В результате получается ахтунг.
С удовольствием выслушаю другие гипотезы о причинах такого резкого снижения производительности.
PS. Профайлера у меня нет, так что даже и не предлагайте
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Ну дык вот. Производительность упала на глазах — раз в пять. Видно прямо при перерисовке окон (сделаны на BCB5) — отображаемые данные тащатся из объектов, обcлуживаются именно этим сервисным модулем, откомпилированным на VC8. Если этот модуль заново пересобрать на BCB5 — все нормально.
Здравствуйте, OdesitVadim, Вы писали:
OV>Здравствуйте, Коваленко Дмитрий: OV>Почитайте на сайте FAR, почему они отказались от майкрософтовского компилятора и остались на борландовском
Можно ссылку?
С уважением, Александр
Re[3]: Производительность и смешивание компиляторов
Здравствуйте, Smal, Вы писали:
S>Здравствуйте, OdesitVadim, Вы писали:
OV>>Здравствуйте, Коваленко Дмитрий: OV>>Почитайте на сайте FAR, почему они отказались от майкрософтовского компилятора и остались на борландовском S>Можно ссылку? http://pravoznavec.com.ua/rules.html
Основное
~~~~~~~~
[!] Для компиляции FAR Manager использовался Borland C/C++ 5.02. MSVC 6 SP4
не оправдал ожиданий (FAR 1.70 beta 1) и добавил тормозов (работа с
выделением памяти для мелкими объектов).
... << RSDN@Home 1.2.0 alpha rev. 727>>
Re[2]: Производительность и смешивание компиляторов
Здравствуйте, Smal, Вы писали:
КД>>Ну дык вот. Производительность упала на глазах — раз в пять. Видно прямо при перерисовке окон (сделаны на BCB5) — отображаемые данные тащатся из объектов, обcлуживаются именно этим сервисным модулем, откомпилированным на VC8. Если этот модуль заново пересобрать на BCB5 — все нормально.
S>Надеюсь в восьмерке Вы clr с корнями отключили?
Не, ну я же не первый год замужем
Конечно же, я достаточно внимательно просмотрел все используемые опции компилятора.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[4]: Производительность и смешивание компиляторов
OV>Основное
OV>~~~~~~~~
OV>[!] Для компиляции FAR Manager использовался Borland C/C++ 5.02. MSVC 6 SP4
OV> не оправдал ожиданий (FAR 1.70 beta 1) и добавил тормозов (работа с
OV> выделением памяти для мелкими объектов).
Между нами, девочками — Borland C/C++ 5.x это ТАКОЕ Г (и компилятор, и библиотека), что страшно даже вспоминать. "Мечта" сапера, одним словом.
Единственное что там было реально классно сделано — менеджер проектов. До сих пор, как вспоминаю, так утираю скупую, девичью слезу
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[5]: Производительность и смешивание компиляторов
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Между нами, девочками — Borland C/C++ 5.x это ТАКОЕ Г (и компилятор, и библиотека), что страшно даже вспоминать. "Мечта" сапера, одним словом.
Мне в нём одно нравилось — примеры по С++ от Керигана, Страуструпа и прочих больших людей в нем запускались с полнинка. А причина в том, что он добавлял using namespace std; по умолчанию (тоесть просто знал о этом пространстве имён и не ругался, если я напишу просто cin или cout). А большие мира программирование почему то тоже не писали этой заветной строки. Толи книги у меня древние, толи они не тем компилятором пользовались, либо полагались , что простой новичёк сразу покурит стандарт и поймёт, почему hello world не компилиться. КД>Единственное что там было реально классно сделано — менеджер проектов. До сих пор, как вспоминаю, так утираю скупую, девичью слезу
Я только компилятором пользовался. А саму оболочку только на картинках видел...
... << RSDN@Home 1.2.0 alpha rev. 727>>
Re[2]: Производительность и смешивание компиляторов
Здравствуйте, OdesitVadim, Вы писали:
OV>Здравствуйте, Коваленко Дмитрий: OV>Почитайте на сайте FAR, почему они отказались от майкрософтовского компилятора и остались на борландовском
AFAIK они сейчас его VC 7.1 собирают...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[3]: Производительность и смешивание компиляторов
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, OdesitVadim, Вы писали:
OV>>Здравствуйте, Коваленко Дмитрий: OV>>Почитайте на сайте FAR, почему они отказались от майкрософтовского компилятора и остались на борландовском CC>AFAIK они сейчас его VC 7.1 собирают...
Да, проверил последний билд — действительно VC7. Хотя многие плагины остались на борландовском компиляторе собраны. Удобство за счёт мегагерц. (С) — не мой
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Привет всем.
КД>...
может и не в тему, но подобные проблемы замечал, кажется, Александреску в своем Modern C++ design — в разделе, посвященному SmallObjectsAllocator. Уверен на 99,9% что ваши тормоза связаны с выделением памяти, советую испробовать аллокатор от Александреску (он входит в состав библиотеки Loki). Уверен, разберешься как использовать его со строками, веторами и прочей красотой от STL
Re[4]: Производительность и смешивание компиляторов
Здравствуйте, OdesitVadim, Вы писали:
OV>[!] Для компиляции FAR Manager использовался Borland C/C++ 5.02. MSVC 6 SP4 OV> не оправдал ожиданий (FAR 1.70 beta 1) и добавил тормозов (работа с OV> выделением памяти для мелкими объектов). OV>[/q]
Здравствуйте, remark, Вы писали:
R>Здравствуйте, OdesitVadim, Вы писали:
OV>>[!] Для компиляции FAR Manager использовался Borland C/C++ 5.02. MSVC 6 SP4 OV>> не оправдал ожиданий (FAR 1.70 beta 1) и добавил тормозов (работа с OV>> выделением памяти для мелкими объектов). OV>>[/q]
R>MSVC 6 SP4 немного отличается от MSVC 8 SP1
Угу только тромозить на выделении мелких объектов не перстал
Re[2]: Производительность и смешивание компиляторов
Здравствуйте, StevenIvanov, Вы писали:
SI>может и не в тему, но подобные проблемы замечал, кажется, Александреску в своем Modern C++ design — в разделе, посвященному SmallObjectsAllocator. Уверен на 99,9% что ваши тормоза связаны с выделением памяти, советую испробовать аллокатор от Александреску (он входит в состав библиотеки Loki). Уверен, разберешься как использовать его со строками, веторами и прочей красотой от STL
как вариант плавного перехода можно попробовать VC + stlport
AFAIK в stlport есть оптимизация для мелких объектов
кстати может стоит использовать VC7.1 (компиляция быстрее и оптимизация на уровне)
Re[3]: Производительность и смешивание компиляторов
Здравствуйте, WiseAlex, Вы писали:
SI>>может и не в тему, но подобные проблемы замечал, кажется, Александреску в своем Modern C++ design — в разделе, посвященному SmallObjectsAllocator. Уверен на 99,9% что ваши тормоза связаны с выделением памяти, советую испробовать аллокатор от Александреску (он входит в состав библиотеки Loki). Уверен, разберешься как использовать его со строками, веторами и прочей красотой от STL WA>как вариант плавного перехода можно попробовать VC + stlport WA>AFAIK в stlport есть оптимизация для мелких объектов WA>кстати может стоит использовать VC7.1 (компиляция быстрее и оптимизация на уровне)
У меня, как это говорится, на STLPort "не стоит". Я с ним поигрался в свое время (на билдере) и охладел. Мне от STL нужен только минимум — навороты у меня в собственной плюсовой библиотеке. Так сложилось.
Ладно фиг с ним. Но я вот что думаю. BCB5 компилирует раза в три быстрее VC8 (в два — точно). Родной RW-STL, получается, тоже достаточно эффективен. И все это дело датируется 2000 годом. Но народ упорно, с пеной у рта доказывал, что BCB — тормоз
PS. Я с компиляторами борланда более чем на ты. После всего того, что я с ними делал, остается только жениться
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
КД>PS. Профайлера у меня нет, так что даже и не предлагайте
А всё-таки предложу, хотя бы http://www.codersnotes.com/sleepy/
хотя бы одним глазком взглянуть всё равно полезно.
Re[2]: Производительность и смешивание компиляторов
Здравствуйте, voronaam, Вы писали:
КД>>PS. Профайлера у меня нет, так что даже и не предлагайте V>А всё-таки предложу, хотя бы V>http://www.codersnotes.com/sleepy/ V>хотя бы одним глазком взглянуть всё равно полезно.
На 2000 не работает — не найдена какая-та функция (я прям как глупый юзер, сразу нажал OK и немедленно деинсталлировал , ставить заново — лень ).
Дома попробую на XP
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[3]: Производительность и смешивание компиляторов
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Здравствуйте, voronaam, Вы писали:
КД>>>PS. Профайлера у меня нет, так что даже и не предлагайте V>>А всё-таки предложу, хотя бы V>>http://www.codersnotes.com/sleepy/ V>>хотя бы одним глазком взглянуть всё равно полезно.
КД>На 2000 не работает — не найдена какая-та функция (я прям как глупый юзер, сразу нажал OK и немедленно деинсталлировал , ставить заново — лень ).
КД>Дома попробую на XP
А у меня на XP всё время выдаёт в какой-то функции ядра, хотя программа работает и проц периодически подгружает на 100%...
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Ладно фиг с ним. Но я вот что думаю. BCB5 компилирует раза в три быстрее VC8 (в два — точно). Родной RW-STL, получается, тоже достаточно эффективен. И все это дело датируется 2000 годом. Но народ упорно, с пеной у рта доказывал, что BCB — тормоз
А ты BDS какой ни будь попробуй запустить по сравнению с ними VC8 летает