информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыЗа кого нас держат?Все любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 На GitHub пугают ложными предупреждениями... 
 Атака на пользователей больших... 
 Notepad++ полгода раздавал зараженные... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] вот алгоритм - проверь у себя плз 18.04.02 10:57  Число просмотров: 1023
Автор: beetle <beetle> Статус: Member
<"чистая" ссылка>
> Ctho to ne vizhu I kokogo libo super-puper find.
я же тебе говорил,что обычный перебор.По другому нельзя в данной ситуации.Там видишь ли задействованы все атрибуты,а сортированы данные только по одному.Вот и приходится
> Poslednii raz govoru chto eta function rabotaet i to chto
> ona vydaet i est to vremia kotoroe proshlo, i esli eto
> vremia malo ili null togda tak ono i est`!! A to chto
> obchee vrema gorazdo bolshe chem vremia poluchennoe cherez
> etu function, skoree vsego oznachaet chto tvoe thread
> rabotaet s drugoi thread( ili threads) a ta drugaia
> (drugie) pozhiraut eto vremia.
да интересно какие же потоки вызываются для нескольких операций сравнения.Или ты решил,что сравнение в ядре выполняется???
ясно сказано,что она возвращает время в 100-наносекундных интервалах-так ты хош сказать,что ентот перебор хотя бы для 100 елементов выполняется менее чем за 100 наносекунд - может быть=)).Проверю с профилировщиком
<programming>
[Win32] 2 all - trables with GetThreadTimes 16.04.02 23:03  
Автор: beetle <beetle> Статус: Member
<"чистая" ссылка>
мне нужно провести хронометраж исполнения алгоритма поиска.Для ентого до начала поиска візіваю :
...
GetThreadTimes(GetCurrentThread(),&ftPlug,&ftPlug,&ftKrnlS,&ftUsrS)
...
возвращает некоторіе значения:
ftKrnlS - время,затраченное потоком на віполнение кода ОС
ftUsrS - время,затрач.потоком на віполнение своего кода
Потом идет:
...
ptrMatchedElemPos = _find(dwResArraySize);
...//по ходу єто функция поиска ел-та.При //большом N(N-кол-во записей в файле)может //искать долго,так как делает не меньше чем N-1
//сравнений
далее сразу же после єтого идет:
GetThreadTimes(GetCurrentThread(),&ftPlug,&ftPlug,&ftKrnlE,&ftUsrE)
и получается,что
ftKrnlE == ftKrnlS и ftUsrE = ftUserS
(спецом смотрел под дебуггером)
пробовал добавить кучу циклов,чтобі время проц впустую погонять - разница во времени віходит минимальная
какие будут предположения????
[win32] попробуй командой процессора rdtsc 17.04.02 18:08  
Автор: mijk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Если у тебя пентиум и не нужен раздельный учет по kernel и user, можно использовать команду rdtsc, возвращающую количество машинных запусков от старта процессора в регистрах edx и eax. C++ ее не понимает, но, вроде, можно так:

inline unsigned _int64 GetCycleCount()
{
  _asm _emit 0x0F
  _asm _emit 0x31
}


---

Использование простое:
unsigned _int64 start = GetCycleCount();
..........
unsigned _int64 duration = GetCycleCount() - start;
[win32] попробуй командой процессора rdtsc 18.04.02 01:52  
Автор: beetle <beetle> Статус: Member
<"чистая" ссылка>
енто все великолепно,но для однозадачной среды.А как мне узнать,какие такты мои.а какие левых процессов.ведь я же не гарантирован,что между вызовами GettickCount() винда не переключит контекст проца на дрругой поток.
[Win32] 2 all - trables with GetThreadTimes 16.04.02 23:47  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
> мне нужно провести хронометраж исполнения алгоритма
> поиска.Для ентого до начала поиска візіваю :
> ...
> GetThreadTimes(GetCurrentThread(),&ftPlug,&ftPlug,&ftKrnlS,
> &ftUsrS)
> ...
> возвращает некоторіе значения:
> ftKrnlS - время,затраченное потоком на віполнение кода ОС
> ftUsrS - время,затрач.потоком на віполнение своего кода
> Потом идет:
> ...
> ptrMatchedElemPos = _find(dwResArraySize);
> ...//по ходу єто функция поиска ел-та.При //большом
> N(N-кол-во записей в файле)может //искать долго,так как
> делает не меньше чем N-1
> //сравнений
> далее сразу же после єтого идет:
> GetThreadTimes(GetCurrentThread(),&ftPlug,&ftPlug,&ftKrnlE,
> &ftUsrE)
> и получается,что
> ftKrnlE == ftKrnlS и ftUsrE = ftUserS
> (спецом смотрел под дебуггером)
> пробовал добавить кучу циклов,чтобі время проц впустую
> погонять - разница во времени віходит минимальная
> какие будут предположения????

Specialno prover u menia vse rabotaet.
vyvod odin: tvoi algoritm vypolniaetsia ochen bystro
vot moi test:
	FILETIME fc,fe,fk,fu,_fk,_fu;
	::GetThreadTimes(::GetCurrentThread(),&fc, &fe, &fk, &fu); 
	
	for(long ll =0;ll<100000;++ll)
	{
		buf = ::SysAllocStringByteLen(0,16);
	}
	::GetThreadTimes(::GetCurrentThread(),&fc, &fe, &_fk, &_fu); 
	printf("k-time = %d, u-time=%d\n", _fk.dwLowDateTime - fk.dwLowDateTime , _fu.dwLowDateTime, _fu.dwLowDateTime );


---
resultat: k-time = 400576, u-time=49971856
[Win32] я думаю дело не в моем алгоритме 17.04.02 15:58  
Автор: beetle <beetle> Статус: Member
<"чистая" ссылка>

> Specialno prover u menia vse rabotaet.
> vyvod odin: tvoi algoritm vypolniaetsia ochen bystro
>
> vot moi test:
> 	FILETIME fc,fe,fk,fu,_fk,_fu;
> 	::GetThreadTimes(::GetCurrentThread(),&fc, &fe,
> &fk, &fu); 
>         
> 	for(long ll =0;ll<100000;++ll)
> 	{
> 		buf = ::SysAllocStringByteLen(0,16);
> 	}
> 	::GetThreadTimes(::GetCurrentThread(),&fc, &fe,
> &_fk, &_fu); 
> 	printf("k-time = %d, u-time=%d\n",
> _fk.dwLowDateTime - fk.dwLowDateTime , _fu.dwLowDateTime,
> _fu.dwLowDateTime );
> 
> 

---
> resultat: k-time = 400576, u-time=49971856
хех - дік я же говорю,что с циклами пустіми відает разницу.Я делал все енто проще даже-ставил цикл-пустішку-и все-равно есть разница.
Что значит слишком бістро-меньше 100 наносекунд ті хочешь сказать =))
врядли - видимо функция коряво ведет хронометраж.Я сначала поиск вінес в отдельній поток-так там она мне ваще нули возвращала,где бі я ее не візівал.Может кто подскажет как по другому сделать?????
[Win32] я думаю дело не в моем алгоритме 17.04.02 21:19  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
>
> > Specialno prover u menia vse rabotaet.
> > vyvod odin: tvoi algoritm vypolniaetsia ochen bystro
> >
> > vot moi test:
> >	FILETIME fc,fe,fk,fu,_fk,_fu;
> >	::GetThreadTimes(::GetCurrentThread(),&fc, &fe,
> > &fk, &fu); 
> >	     
> >	for(long ll =0;ll<100000;++ll)
> >	{
> >		buf = ::SysAllocStringByteLen(0,16);
> >	}
> >	::GetThreadTimes(::GetCurrentThread(),&fc, &fe,
> > &_fk, &_fu); 
> >	printf("k-time = %d, u-time=%d\n",
> > _fk.dwLowDateTime - fk.dwLowDateTime ,
> _fu.dwLowDateTime,
> > _fu.dwLowDateTime );
> > 
> > 

---
> > resultat: k-time = 400576, u-time=49971856
> хех - дік я же говорю,что с циклами пустіми відает
> разницу.Я делал все енто проще даже-ставил цикл-пустішку-и
> все-равно есть разница.
> Что значит слишком бістро-меньше 100 наносекунд ті хочешь
> сказать =))
> врядли - видимо функция коряво ведет хронометраж.Я сначала
> поиск вінес в отдельній поток-так там она мне ваще нули
> возвращала,где бі я ее не візівал.Может кто подскажет как
> по другому сделать?????

Esli ona vydaet eto znachenie znachit ono takoe i est`.
from MSDN:

These times do not include time spent executing system threads or waiting in a suspended or blocked state.

sledovatelno tvoi algorithm ispolzuet kakieto API kotorye ispolzuut system threads.
[Win32] вот алгоритм - проверь у себя плз 17.04.02 22:32  
Автор: beetle <beetle> Статус: Member
<"чистая" ссылка>
DWORD dwResArraySize = 0,*ptrMatchedElemPos = NULL,pos;
FILETIME ftKrnlS,ftKrnlE,ftUsrS,ftUsrE,ftPlug;
__int64 qwKrnlTm,qwUsrTm,qwTotal;
CString end,pars,rslts;
if(GetThreadTimes(GetCurrentThread(),&ftPlug,&ftPlug,&ftKrnlS,&ftUsrS)==0)
ERR

ptrMatchedElemPos = _find(dwResArraySize);
if(GetThreadTimes(GetCurrentThread(),&ftPlug,&ftPlug,&ftKrnlE,&ftUsrE)==0)
ERR
qwKrnlTm = FTtoQW(&ftKrnlE) - FTtoQW(&ftKrnlS);
qwUsrTm = FTtoQW(&ftUsrE) - FTtoQW(&ftUsrS);
qwTotal = qwKrnlTm + qwUsrTm;
wsprintf(end.GetBuffer(50),"Пошук завершено.Тривалість %lu %luХ100 наносекунд",pos = (DWORD)(qwTotal >> 32),(DWORD)qwTotal& 0xFFFFFFFF);
m_lstResults.AddString(end);
****************************************************
DWORD* CExSearch::_find(DWORD& dwSizeRA)
{
DWORD dwPosCount = m_pPhMgrDlg->m_pDataBox.GetCount(),*ptrMatchedElemPos = NULL;
for (DWORD pos = 0;pos < dwPosCount;pos++) {
if(m_bIsSearchByName)
if(!strstr(m_pPhMgrDlg->m_pDataBox[pos].name,(LPCTSTR)_strSearchByName))
continue;
if(m_bIsSearchByPhone)
if(!strstr(m_pPhMgrDlg->m_pDataBox[pos].phone,(LPCTSTR)strSearchByPhone))
continue;
if(m_bIsSearchByComments)
if(!strstr(m_pPhMgrDlg->m_pDataBox[pos].comments,(LPCTSTR)ь_strSearchByComments))
continue;
if(ptrMatchedElemPos == NULL)
if((ptrMatchedElemPos = (DWORD*) new DWORD[dwPosCount]) == NULL) {
ERR
return 0;
}
ptrMatchedElemPos[dwSizeRA++] = pos;
}
return ptrMatchedElemPos;
}
попробуй.Интернесно.А то,что написано в мСДН - не всегда верно на 100%.МСДН знаешь ли коммерческая штука.Иногда маркетинг не позволяет вікладівать точную инфу.Но тогда помогает айс =))
я вот попробую через такті проца сделать =))
[Win32] вот алгоритм - проверь у себя плз 17.04.02 23:25  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
> попробуй.Интернесно.А то,что написано в мСДН - не всегда
> верно на 100%.МСДН знаешь ли коммерческая штука.Иногда

Nu-nu, pokrainei mere ata function rabotaet ka i pologaetsia.
Kstat ata function just wrapper for NtQueryInformationThread(...)
kotoraya ispolzuetsia po polnoi programme vezde

> маркетинг не позволяет вікладівать точную инфу.Но тогда
> помогает айс =))

???
blah-blah-blah

> я вот попробую через такті проца сделать =))

A kak ty uznaesh kakie "такті" otnosiatsi k tvoeii thread?
[Win32] вот алгоритм - проверь у себя плз 18.04.02 01:54  
Автор: beetle <beetle> Статус: Member
<"чистая" ссылка>
> NtQueryInformationThread(...)
> kotoraya ispolzuetsia po polnoi programme vezde
я не спорю.что она работает,но тогда проясні мне почему она мне нулі сует,а???
> > маркетинг не позволяет вікладівать точную инфу.Но
> тогда
> > помогает айс =))
>
> ???
> blah-blah-blah
имелся в виду отладчик SoftIce =))
> > я вот попробую через такті проца сделать =))
>
> A kak ty uznaesh kakie "такті" otnosiatsi k tvoeii thread?
не знаю пока.сам спросил про енто
[Win32] вот алгоритм - проверь у себя плз 18.04.02 04:41  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
Ctho to ne vizhu I kokogo libo super-puper find.

Poslednii raz govoru chto eta function rabotaet i to chto ona vydaet i est to vremia kotoroe proshlo, i esli eto vremia malo ili null togda tak ono i est`!! A to chto obchee vrema gorazdo bolshe chem vremia poluchennoe cherez etu function, skoree vsego oznachaet chto tvoe thread rabotaet s drugoi thread( ili threads) a ta drugaia (drugie) pozhiraut eto vremia.

P.S.
e.p.r.s.t. blin
[Win32] вот алгоритм - проверь у себя плз 18.04.02 10:57  
Автор: beetle <beetle> Статус: Member
<"чистая" ссылка>
> Ctho to ne vizhu I kokogo libo super-puper find.
я же тебе говорил,что обычный перебор.По другому нельзя в данной ситуации.Там видишь ли задействованы все атрибуты,а сортированы данные только по одному.Вот и приходится
> Poslednii raz govoru chto eta function rabotaet i to chto
> ona vydaet i est to vremia kotoroe proshlo, i esli eto
> vremia malo ili null togda tak ono i est`!! A to chto
> obchee vrema gorazdo bolshe chem vremia poluchennoe cherez
> etu function, skoree vsego oznachaet chto tvoe thread
> rabotaet s drugoi thread( ili threads) a ta drugaia
> (drugie) pozhiraut eto vremia.
да интересно какие же потоки вызываются для нескольких операций сравнения.Или ты решил,что сравнение в ядре выполняется???
ясно сказано,что она возвращает время в 100-наносекундных интервалах-так ты хош сказать,что ентот перебор хотя бы для 100 елементов выполняется менее чем за 100 наносекунд - может быть=)).Проверю с профилировщиком
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach