Я недавно начал изучать C++, поэтому решил попробовать написать программку которая будет перебирать PID'ы и выдавать названия ассоциирующихся с ними процессов. В данном виде моя функция заработала, однако она думает слишком долго. Подскажите плиз, какие бывают способы ускорить такие вещи?
Код:
String^ GetNameX() { Process^ pp; int i; String^ ss;
for (i=0; i<=100500; i++) { try { pp = Process::GetProcessById(i); //пытаемся определить имя процесса ss = ss + "\n" + Convert::ToString(i) +"==" + Convert::ToString(pp); //определили, записываем в переменную } catch (Exception^ ee) { ; //хееееегакс процесса не существует, и похег } } return ss; }
10 сен 2011, 22:11
Marshall
[22.6]
CPP, как ускорить код?
Возможно так же как и в css\html. Уменьши размер файла с кодом. Убери все ненужные пробелы. Сделай все в одну строчку.
10 сен 2011, 22:20
Нетролльниразу
[-0.6]
0
CPP, как ускорить код?
количество пробелов не влияет т.к. компиляторы обычно их убирают автоматом единственный вариант искать более быстрые алгоритмы, спец функции и тп
10 сен 2011, 22:22
DDUH
[41.4]
0
CPP, как ускорить код?
Код:
#include #include #include #include
// To ensure correct resolution of symbols, add Psapi.lib to TARGETLIBS // and compile with -DPSAPI_VERSION=1
// Calculate how many process identifiers were returned.
cProcesses = cbNeeded / sizeof(DWORD);
// Print the name and process identifier for each process.
for ( i = 0; i < cProcesses; i++ ) { if( aProcesses[i] != 0 ) { PrintProcessNameAndID( aProcesses[i] ); } }
return 0; }
10 сен 2011, 22:37
Cespenar
[1.1]
0
CPP, как ускорить код?
Спасибо, DDUH, походу из-за "try catch" тормозит, реально извращение, попробую через if (NULL != hProcess ){ }, но надо будет про threading почитать, не особо представляю как вообще распарралеливать и как потом эти куски собирать обратно.
10 сен 2011, 22:57
DDUH
[41.4]
0
CPP, как ускорить код?
Cespenar писал(а):
Спасибо, DDUH, походу из-за "try catch" тормозит, реально извращение, попробую через if (NULL != hProcess ){ }, но надо будет про threading почитать, не особо представляю как вообще распарралеливать и как потом эти куски собирать обратно.
Ты ничего не понял.
for (i=0; i<=100500; i++) // - вместо того чтобы перебирать все процессы подряд, нужно вызвать системную функцию получения множества всех процессов - Эта функция вернёт тебе массив ID всех процессов, и пробегая по массиву получаешь имена.
Ты же пытаешься 100500 раз вызывать Process::GetProcessById(i), хотя процессов в системе от силы 100.
10 сен 2011, 23:03
Sec
0
CPP, как ускорить код?
про пробелы это понятно как день.
а вот можно по подробнее про EnumProcessModules эта процедура возвращает множество только активных процессов ?
10 сен 2011, 23:08
Cespenar
[1.1]
0
CPP, как ускорить код?
Цитата:
Ты ничего не понял.
for (i=0; i<=100500; i++) // - вместо того чтобы перебирать все процессы подряд, нужно вызвать системную функцию получения множества всех процессов - EnumProcessModules Эта функция вернёт тебе массив ID всех процессов, и пробегая по массиву получаешь имена.
Ты же пытаешься 100500 раз вызывать Process::GetProcessById(i), хотя процессов в системе от силы 100.
Дада, уже въехал;) только похоже не массив ID, а просто левый массив процессов из которых я получаю ID, имя и еще что-нибудь.
10 сен 2011, 23:18
Sec
0
CPP, как ускорить код?
Cespenar писал(а):
Цитата:
Ты ничего не понял.
for (i=0; i<=100500; i++) // - вместо того чтобы перебирать все процессы подряд, нужно вызвать системную функцию получения множества всех процессов - EnumProcessModules Эта функция вернёт тебе массив ID всех процессов, и пробегая по массиву получаешь имена.
Ты же пытаешься 100500 раз вызывать Process::GetProcessById(i), хотя процессов в системе от силы 100.
Дада, уже въехал;) только похоже не массив ID, а просто левый массив процессов из которых я получаю ID, имя и еще что-нибудь.
это назывется - запись +_+
10 сен 2011, 23:23
Floy
0
CPP, как ускорить код?
написать такое сообщение на игровом портале,это возможность показать какой ты? пойду спрошу на форуме хирургов какого мясца мне купить к ужину
11 сен 2011, 08:05
ArtHunter
[0.4]
0
CPP, как ускорить код?
Floy писал(а):
написать такое сообщение на игровом портале,это возможность показать какой ты? пойду спрошу на форуме хирургов какого мясца мне купить к ужину
Человек просто спросил совета. Форум хоть и игровой, но тут есть специальные разделы для таких вопросов, что мешает ему спросить? Если у тебя не хватает мозгов написать что-то дельное, то лучше промолчи.
В Киеве и Львове болденон купить у нас с доставкой Новой почтой в течении 2 рабочих дней от заказа.
На сайте использованы материалы, принадлежащие Blizzard Entertainment. Копирование материалов возможно только c разрешения портала. В противном случае это будет называться уже другим словом.