доброго времени суток, народ. есть такой вопрос, сорри конечно если оффтоп, но что поделеаешь.. вот понадобилось исплоьзовать в студии такой инструмент, как профайлер, собственно интересует где в программе используется все процессорное время, то есть вычленить метод, который является критичным и занимает все процессорное времяи ресурсы. так вот собственно сабж, как получить доступ к профайлеру в студии- надо загрузитьего как отдельную утилиту или дже он существует непостредственно в самой студии? и желательно надыбать какой нить хелп по то му как им пользоваться. мсдн конечно же читал, там что то совсем мало про это вообще написано. так что кто чем может — помогите.
Здравствуйте, ChMaker, Вы писали:
так вот собственно сабж, как получить доступ к профайлеру в студии- надо загрузитьего как отдельную утилиту или дже он существует непостредственно в самой студии? ... так что кто чем может — помогите.
Так вы помоглии бы себе помочь, скажите какая версия студии. Ни в одной из студий встроенного профайлера нет.
Если это 6-ка, то с ней шли в комлекте консольные утилиты и батники для их вызова.
А если .НЕТ, то там в комлекте профайлера вообще нет и старый не подойдет.
Но выход есть, можно скачать Compuware Profiler community edition, так кажется оно называется. Я сам исппользовал — классная вещь, очень красивые картинки .
Ну и наконец гвоздь программы: интегрированный профайлер в самой студии: Нажатие клавиши "Пауза" во время выполнения программы в студии как раз и перемещает вас в "метод, который является критичным и занимает все процессорное время и ресурсы".
Выбирайте
Здравствуйте, ChMaker, Вы писали:
CM>доброго времени суток, народ. есть такой вопрос, сорри конечно если оффтоп, но что поделеаешь.. вот понадобилось исплоьзовать в студии такой инструмент, как профайлер, собственно интересует где в программе используется все процессорное время, то есть вычленить метод, который является критичным и занимает все процессорное времяи ресурсы. так вот собственно сабж, как получить доступ к профайлеру в студии- надо загрузитьего как отдельную утилиту или дже он существует непостредственно в самой студии? и желательно надыбать какой нить хелп по то му как им пользоваться. мсдн конечно же читал, там что то совсем мало про это вообще написано. так что кто чем может — помогите.
VS2005 Team Suite включает в себя профайлер. В остальных вариантах VS2005, насколько мне известно, профайлера нет. Запустить его можно через меню Tools->Performance Tools.
Но я бы тебе посоветовал взять trial на 30 дней (или сколько там) профайлера Intel VTune и сделать всё что тебе нужно. VTune лучше, чем профайлер из VS2005.
Здравствуйте, alexeiz, Вы писали:
A>Здравствуйте, ChMaker, Вы писали:
CM>>доброго времени суток, народ. есть такой вопрос, сорри конечно если оффтоп, но что поделеаешь.. вот понадобилось исплоьзовать в студии такой инструмент, как профайлер, собственно интересует где в программе используется все процессорное время, то есть вычленить метод, который является критичным и занимает все процессорное времяи ресурсы. так вот собственно сабж, как получить доступ к профайлеру в студии- надо загрузитьего как отдельную утилиту или дже он существует непостредственно в самой студии? и желательно надыбать какой нить хелп по то му как им пользоваться. мсдн конечно же читал, там что то совсем мало про это вообще написано. так что кто чем может — помогите.
A>VS2005 Team Suite включает в себя профайлер. В остальных вариантах VS2005, насколько мне известно, профайлера нет. Запустить его можно через меню Tools->Performance Tools.
A>Но я бы тебе посоветовал взять trial на 30 дней (или сколько там) профайлера Intel VTune и сделать всё что тебе нужно. VTune лучше, чем профайлер из VS2005.
мне для чего это собственно надо: есть программа, которая довольно долго работает выполняя сравнения, которые обеспечиваеит собственно библиотека — сторонняя. и ситуация следующая — во время выполнения программы процессор грузитится всего на 15 процентов, но при этом время работы явно не является приемлемым, и надо сделать наоборот чтобы процессор грузился на 70 процентов ну или меньше, но при этом времени тратилось мало, то есть время в данном случае очень критично,а вот ресурсы не особенно. знаю есть метод SetProcessPriority, и ему передается в качестве первого аргумента десткриптор процесса и флаг срочности, так вот вроде бы делаю все правильно, то есть перед вызовом критичного метода, который представляет из себя, грубо говоря цикл, в котором вызывается билиотечная функция сравнения, вызываю указанный метод, но что то особенно не помогает, вопрос собственно в том как заставить процессор грузиться по максиммум при выполнении моей локальной задачи програмным способом
Здравствуйте, ChMaker, Вы писали:
CM>мне для чего это собственно надо: есть программа, которая довольно долго работает выполняя сравнения, которые обеспечиваеит собственно библиотека — сторонняя. и ситуация следующая — во время выполнения программы процессор грузитится всего на 15 процентов, но при этом время работы явно не является приемлемым, и надо сделать наоборот чтобы процессор грузился на 70 процентов ну или меньше, но при этом времени тратилось мало, то есть время в данном случае очень критично,а вот ресурсы не особенно.
В программе много потоков или один? Такое впечатление, что у тебя время тратится на синхронизацию между потоками. Но попрофилировать всегда не мешает. Наугад вряд-ли определишь.
> знаю есть метод SetProcessPriority, и ему передается в качестве первого аргумента десткриптор процесса и флаг срочности,
Не поможет. SetThreadPriority делает не то, что ты думаешь.
> так вот вроде бы делаю все правильно, то есть перед вызовом критичного метода, который представляет из себя, грубо говоря цикл, в котором вызывается билиотечная функция сравнения, вызываю указанный метод, но что то особенно не помогает, вопрос собственно в том как заставить процессор грузиться по максиммум при выполнении моей локальной задачи програмным способом
Здравствуйте, alexeiz, Вы писали:
A>Здравствуйте, ChMaker, Вы писали:
CM>>мне для чего это собственно надо: есть программа, которая довольно долго работает выполняя сравнения, которые обеспечиваеит собственно библиотека — сторонняя. и ситуация следующая — во время выполнения программы процессор грузитится всего на 15 процентов, но при этом время работы явно не является приемлемым, и надо сделать наоборот чтобы процессор грузился на 70 процентов ну или меньше, но при этом времени тратилось мало, то есть время в данном случае очень критично,а вот ресурсы не особенно.
A>В программе много потоков или один? Такое впечатление, что у тебя время тратится на синхронизацию между потоками. Но попрофилировать всегда не мешает. Наугад вряд-ли определишь.
>> знаю есть метод SetProcessPriority, и ему передается в качестве первого аргумента десткриптор процесса и флаг срочности,
A>Не поможет. SetThreadPriority делает не то, что ты думаешь.
>> так вот вроде бы делаю все правильно, то есть перед вызовом критичного метода, который представляет из себя, грубо говоря цикл, в котором вызывается билиотечная функция сравнения, вызываю указанный метод, но что то особенно не помогает, вопрос собственно в том как заставить процессор грузиться по максиммум при выполнении моей локальной задачи програмным способом
в программе щас всего два потока: один занимается прослушиванием данных от клиента(прием звука), второй занимается вычислениями — вот и все...
Re[3]: как запустить профайлер в студии
От:
Аноним
Дата:
31.08.06 11:57
Оценка:
CM>мне для чего это собственно надо: есть программа, которая довольно долго работает выполняя сравнения, которые обеспечиваеит собственно библиотека — сторонняя. и ситуация следующая — во время выполнения программы процессор грузитится всего на 15 процентов, но при этом время работы явно не является приемлемым, и надо сделать наоборот чтобы процессор грузился на 70 процентов ну или меньше
IMHO Даже процесс с самым низким приоритетом может есть 100% CPU, если нет конкурирующих процессов. Приоритет влияет только на пропорцию распределения времени при конкуренции. Sheduler не отбирает процессор у низкоприоритетных процессов только для того, чтобы дать ему покрутить idle task.
Т.е. твой процесс почему-то сам не может съесть 100%, часто засыпает из-за невозможности продолжать работу.
Обычно это бывает в ожидании ввода-вывода или синхронизации.