powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / вопрос эффективность
9 сообщений из 9, страница 1 из 1
вопрос эффективность
    #34917362
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что эффективнее с точки зрения скорости в диспетчере сообшенй WndProc

std::map (handle =>класс-wrapper CWnd) как в MFC
или же задействовать SetProp / GetProp для хэндлов?

спасибо?
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
вопрос эффективность
    #34917414
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum wrote:
> что эффективнее с точки зрения скорости в диспетчере сообшенй WndProc
>
> std::map (handle =>класс-wrapper CWnd) как в MFC
> или же задействовать SetProp / GetProp для хэндлов?

В MFC используется hash, а std::map обычно дерево. Правда, размер
таблицы в MFC достаточно мал - все рассчитано на небольшое количество
объектов. Производительность GetProp/SetProp нужно измерять
экспериментально - вряд ли про нее что-то удастся сказать, не зная
деталей реализации. Скорее всего, самым эффективным будет использования
локального хеша. Особенно, если обработка однопоточная.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
вопрос эффективность
    #34917626
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, буду пробовать
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
вопрос эффективность
    #34918143
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пытаюсь прогнать такой тест

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
LRESULT CALLBACK GlobalWndProc(...)
{
....
clock_t _clock_last =  0 , _clock_curr =  0 , _clock_diff =  0 ;
MyWnd* lpWindow = (MyWnd*)::GetProp(hWnd, _T("##cwnd_class##this_ptr##"));
_clock_curr = clock();
if (lpWindow)
{
	_clock_diff = abs(_clock_curr - _clock_last);
	str.Format(_T("\ntime stamp - %d"), _clock_diff);
	OutputDebugString(str);
}
...
}

результат

автор
time stamp - 1609
time stamp - 1609
time stamp - 1625
time stamp - 1625
time stamp - 1625
time stamp - 1625
time stamp - 1625
time stamp - 1625
time stamp - 1625
time stamp - 1640
time stamp - 1640
time stamp - 1640
time stamp - 1640
time stamp - 1640
time stamp - 1640
time stamp - 1640
time stamp - 1640
time stamp - 1640
time stamp - 1640
time stamp - 1656
time stamp - 1656
time stamp - 1656


пока работает тест сижу и "не дышу", но время увеличивается, почему?

--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
вопрос эффективность
    #34918155
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что самое интересное все время на 15-16

--------------------------------------------------------------
[не претендую на уникальность][/quot]
...
Рейтинг: 0 / 0
вопрос эффективность
    #34918237
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum wrote:
> пытаюсь прогнать такой тест
>
> LRESULT CALLBACK GlobalWndProc(...)
> {
> ...
> clock_t _clock_last = *0*, _clock_curr = *0*, _clock_diff = *0*;

тут лучше:
_clock_last = clock();

> MyWnd* lpWindow = (MyWnd*)::GetProp(hWnd, _T("##cwnd_class##this_ptr##"));
> _clock_curr = clock();
> if (lpWindow)
> {
> _clock_diff = abs(_clock_curr - _clock_last);
> str.Format(_T("\ntime stamp - %d"), _clock_diff);
> OutputDebugString(str);
> }

или тут (но хуже):
_clock_last = clock();

> ..
> }

Проще сделать вообще по другому - в течении минуты (или сколько не жалко
- но лишь бы счетчик не переполнился) в цикле вызываешь GetProp и
считаешь количество вызовов. Затем тоже самое для map и для hash.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
вопрос эффективность
    #34918303
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а есть какие-нибудь параметры компилятора, как под nix'ами -p для профилирования в самой студии?
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
вопрос эффективность
    #34918353
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrum wrote:
> а есть какие-нибудь параметры компилятора, как под nix'ами -p для
> профилирования в самой студии?

в VC6 - Build\Profile. в 2005 не пользовался, но тоже что-то есть на эту
тему в Build.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
вопрос эффективность
    #34918738
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrumа есть какие-нибудь параметры компилятора, как под nix'ами -p для профилирования в самой студии?
--------------------------------------------------------------
[не претендую на уникальность]
для nix - man gprof
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / вопрос эффективность
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]