Форум программистов, компьютерный форум CyberForum.ru

C++: COM, OLE, ActiveX

Войти
Регистрация
Восстановить пароль
 
vlad1987
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 3
#1

Код из-под COM работает в 3 раза медленнее - C++ COM

26.04.2016, 10:05. Просмотров 534. Ответов 5
Метки нет (Все метки)

Всем доброго времени суток! Прошу уважаемых форумчан не пинать, если вопрос слишком простой, я делаю только первые шаги в знакомстве с технологией COM. Столкнулся вот с какой проблемой.

1) есть некий код на C++, для наглядности пусть он находится в теле функции void f1();
2) есть COM-компонента, оформленная в виде DLL, которая является оберткой вокруг этого кода, что-то вроде

C++
1
2
3
4
5
STDMETHODIMP component::run()
{
    f1();
    return S_OK;
}
Обнаружил, что код f1(), вызываемый из статично слинкованной программы работает раза в 3-4 быстрее, чем вызов интерфейсного метода run():
C++
1
2
3
4
5
6
7
8
#import "path\\to\\dll\\component.dll"
int _tmain(int argc, _TCHAR* argv[])
{
    CoInitialize( NULL );
    CComQIPtr<component> ptr;
    ptr.CoCreateInstance( OLESTR( "component.progID" ) );
    ptr->run();
}
Вопрос: можно ли повысить продуктивность вызова метода COM-компоненты? Если да, как?

Добавлено через 9 часов 59 минут
Спасибо за ответ, но к сожалению рекомендованные ссылки не относятся к моей проблеме.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2016, 10:05     Код из-под COM работает в 3 раза медленнее
Посмотрите здесь:

Система работает всё медленнее и медленнее (Ubuntu 14) - Компьютерное железо
Ноут HP PAVILION dv6-6077er Core i7 2630QM 2000 Mhz 8GB DDR3 500Gb TOSHIBA MK5061GSYN ATI Radeon HD 6770М Наверное, уже в...

Работает медленнее, чем обычно - OpenGL
Всем привет! Написал приложение использующее OpenGL и WinAPI. Всё бы хорошо, если бы при тестах на других компьютерах (на Win 7 и XP)...

Компьютер работает медленнее чем обычно - Удаление вирусов
Добрый день! С недавнего времени стал медленнее работать компьютер (медленнее открываются приложения, сворачиваюся\разворачиваются в...

Интернет на Windows 7 работает медленнее, чем на XP. - Windows 7
Сейчас перешел с XP на Windows 7, но скорость загрузки упала почти в 3 раза. Сейчас стоит XP and Windows 7, на XP скорость идет заявленная,...

Временами пропадает интернет и с недавних работает медленнее - Удаление вирусов
Стал пропадать интернет на ноутбуке. Но на планшете и телефоне работает прекрасно. Очень надеюсь на Вашу помощь, ибо сам не смог разобраться

Многопоточная версия программы работает медленнее однопоточной - C++
Доброго времени суток! Возник довольно странный вопрос, запускаю примерно такую конструкцию: auto l = () { int a = 5, b = 1, c; ...

TMemoryStream работает гораздо медленнее чем TFileStream - Delphi
Запись данных(думаю с чтением также, просто не сверял) в TMemoryStream работает гораздо медленнее чем в TFileStream, так и должно быть или...

Чем больше диск, тем медленнее работает? - Жесткие диски
Встретил в одном из выступлений на ютубе такой тезис, что чем больше емкость диска, тем медленнее он работает. По той причине, что запись...

.NET 4.x Программа в четыре потока работает медленнее, чем ожидалось - C#
Помогите исправить ошибки. Начал разбираться с многопоточностью, пробую создать 4-е потока но работает медленне чем в одном. Нужно...

Почему память работает намного медленнее, чем процессор? - Процессоры
Как решают эту проблему?

Парсер на сервере работает намного медленнее чем на Денвере! - PHP
Здравствуйте! Сделал свой первый парсер, но на сервере он работает намного медленнее чем на Денвере. Почему? И еще, как сделать...

Распараллеливание: код выполняется еще медленнее чем в одном главном потоке - C#
Здравствуйте! Хочу сделать распараллеливание участка кода, а именно этого: for (int i = 0; i &lt; mas.length; i++) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3120 / 1922 / 208
Регистрация: 13.01.2012
Сообщений: 7,362
26.04.2016, 11:19     Код из-под COM работает в 3 раза медленнее #2
Измените подход к проектированию и делайте 1 млн вызовов внутри ком.
vlad1987
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 3
26.04.2016, 17:18  [ТС]     Код из-под COM работает в 3 раза медленнее #3
Спасибо за ответ. Не могли бы Вы пояснить эту мысль на примере того кода, который я привел?
vxg
Модератор
3120 / 1922 / 208
Регистрация: 13.01.2012
Сообщений: 7,362
26.04.2016, 18:47     Код из-под COM работает в 3 раза медленнее #4
Если время на вызов через ком сопоставимо с временем выполнения функции то увеличить скорость можно только перепроектировав Приложение. Например каждый вызов это обработка одного файла - обрабатывайте не по одному а сразу по 100 передавая функции список файлов. Если функция сама по себе тяжелая отличий в скорости вы не должны были заметить.
vlad1987
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 3
27.04.2016, 00:53  [ТС]     Код из-под COM работает в 3 раза медленнее #5
В том-то и дело, что функция тяжелая. Но тем не менее запуск из статической линковки в разы быстрее, чем вызов через COM. Вот я и хочу узнать, может быть есть какие-то оптимизирующие параметры компилятора, которые нужно указать? Или может быть другие нюансы, которые я упустил в силу отсутствия опыта в это технологии.
vxg
Модератор
3120 / 1922 / 208
Регистрация: 13.01.2012
Сообщений: 7,362
27.04.2016, 09:42     Код из-под COM работает в 3 раза медленнее #6
Цитата Сообщение от vlad1987 Посмотреть сообщение
В том-то и дело, что функция тяжелая
это настолько странно что хочется сказать невозможно. само тело функции исполняется как обычный код - то что этот код сидит в COM-обертке ничего не меняет в плане его производительности. потери производительности могут быть только на вызов так как техника самого вызова и передачи параметров существенно отличается от обычного. сам код тела функции не меняется. возможно вы собираете COM-объект с одними настройками (в одной среде) а его альтернативу с другими (в другой среде). дайте модельный пример на котором в реале можно проверить описанное поведение
Yandex
Объявления
27.04.2016, 09:42     Код из-под COM работает в 3 раза медленнее
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru