Название: Qt и профайлер?! Отправлено: Rakot от Апрель 17, 2008, 23:54 Qt 4.3.4 + Eclipse Europa под винду XP.
Програмлю алгоритм на графе(максимальный поток в сети), который находится за время O(n^3). Как найти можн количество операций, за который находится данный поток в программе ? То есть мне и нужно сравнить за скока операций поток находится в программе с его верхней границей. З.Ы. пробовал находить по такой схеме кол операций = мощность процессора(кол операций / сек)*время нахождения(сек); Время находил с помощью QTime. Но с количеством до 100 вершин оно пчему то всегда = 0 :-[! Следовательно и количество операций = 0! но эт ж не верно! Мб есть какие нить фунции замера наносекунд в Qt или накрайняк WinApi ные?? Жду любых идей!!! ;) Название: Re: Qt и профайлер?! Отправлено: Tonal от Апрель 18, 2008, 07:55 Ты количество вершин на порядок увеличь, и не надо будет наносекунды мучить. :-)
P.S. Прикольно ты количество операций считаешь. А это каких операций получается, если вспомнить, про кеши, конвеер, и про то, что плавающая точка может параллельно считаться? Название: Re: Qt и профайлер?! Отправлено: Lom от Апрель 18, 2008, 08:42 Быстродействие под Win обычно меряют вот так:
Код: LARGE_INTEGER Freq; Название: Re: Qt и профайлер?! Отправлено: Sergeich от Апрель 18, 2008, 10:12 Обычно замеряют время работы cpu для данного процесса или потока. Под вынь так:
Код: #include <windows.h> Код: #include <unistd.h> Название: Re: Qt и профайлер?! Отправлено: Rakot от Апрель 18, 2008, 16:35 Быстродействие под Win обычно меряют вот так: Код: LARGE_INTEGER Freq; Делаю так! Вроде время считает правильно. ;) А как узнать сколько операций в сек происходит? Мне же нужно не само время, а количество операций, выполняемой функцией за найденное, указанным выше путем, время. Название: Re: Qt и профайлер?! Отправлено: Tonal от Апрель 19, 2008, 10:37 Ты же не ответил каких именно тебе нужно операций. :-)
Название: Re: Qt и профайлер?! Отправлено: Rakot от Апрель 19, 2008, 13:59 Ты же не ответил каких именно тебе нужно операций. :-) Дык я не знаю каких мне?! :-[ Мне нужно узнать сколько операций мой комп делает в сек. И выше я писал, что есть, например, граф на 10 вершин. На его нахождение потребуется не более 1000 итераций(судя по его сложности O(n^3)). Время я нахожу как писал Lom. А вот сколько мой комп тратит итераций на нахождение решения я то и пытаюсь найти по моей формуле. Ну выложи какие ты знаешь(если не трудно), а я уж подберу какие мну подходят. Название: Re: Qt и профайлер?! Отправлено: Tonal от Апрель 21, 2008, 11:08 Если тебе нужно посчитать итерации - то смотри алгоритм и его реализацию. Мерить время для этого бессмысленно.
Если операции - то смотря что ты под ними понимаешь. Например операции ассемблера - компилишь всё с ассемиблерным листингом, и считаешь количество командочек. В циклах умножая на количество повторов. :) Ну а что ты будешь с померенным временем делать - я не знаю. :) P.S. Обычно, из алгоритма получают трудоёмкость, а потом замерами времени подтверждают, что реализация ведёт себя не хуже теоретической. Например, в твоём случае, если трудоёмкость твоего алгоритма O(n**3), то при увеличении n время расчёта должно увеличиваться по кубу. P.P.S. Возможно тебе что-то вообще не то нужно. :) Название: Re: Qt и профайлер?! Отправлено: Rakot от Апрель 21, 2008, 12:55 Мне нужн посчитать количество операций с плавающей точкой в секунду (Floating Operations Per Second, FLOPS, в наше время чаше говорят о Mflops — миллионах операций в секунду), которые может исполнять процессор.
На Qt как нить можн? Название: Re: Qt и профайлер?! Отправлено: Tonal от Апрель 21, 2008, 13:50 Ну так набери в гугле "как измерить FLOPS" и фтыкай.
Или тебя там забанили? :) Только не понятно, какое это всё отношение к Qt имеет... Название: Re: Qt и профайлер?! Отправлено: Rakot от Апрель 21, 2008, 14:36 Дык искал вгугле!Не нашел!Поэтому и спрашиваю, мб кто нить уже измерял флопы эти :)
Цитировать Только не понятно, какое это всё отношение к Qt имеет... Все остальное пишется на Qt. З.Ы. прост если например флопы как нить через ассемблер ищется, я прост не знаю как его (asm) сконнектить с QT. Название: Re: Qt и профайлер?! Отправлено: Madgeniy от Февраль 12, 2011, 20:07 Подскажите, пожалуйста один момент.
Код:
sysTime и sysTime2 у меня принимают одинаковые значения. Почему так может происходить? Название: Re: Qt и профайлер?! Отправлено: Fat-Zer от Февраль 12, 2011, 20:26 первое, что приходит на ум - процесс не запускается(не правильная команда)...
Название: Re: Qt и профайлер?! Отправлено: Madgeniy от Февраль 12, 2011, 20:36 Процесс отрабатывает. Он создает файл, файл создается.
Название: Re: Qt и профайлер?! Отправлено: Fat-Zer от Февраль 12, 2011, 20:44 # не посмотрел на сами функции...
Дык эти функции возвращают время, проведённое в текущем процессе, а оно, само собой =~0 можно попробовать не извращаться с винапи и использовать: QTime::currentTime () QTime::elapsed () главное, чтоб разрешения таймера хватило... Название: Re: Qt и профайлер?! Отправлено: Madgeniy от Февраль 13, 2011, 14:07 Понял. Как тогда можно посчитать кроме как с помощью таймера? Надо узнать сколько именно времени уделяется самой программе создания файла. У меня архивация происходит, надо только ее время знать в user space.
Название: Re: Qt и профайлер?! Отправлено: Fat-Zer от Февраль 13, 2011, 14:13 ну ум приходят те же самые шаманства с винапи, только передавать GetProcessTimes () хендлер дочернего процесса.
Название: Re: Qt и профайлер?! Отправлено: Madgeniy от Февраль 13, 2011, 15:13 Да. QProcess::pid() видимо, мне в помощь. Однако это только pid рабочего процесса. Процесс высылает сигнал finished и только потом я могу посчитать время, однако в этом время он уже закончит свою работу и результат будет неопределен.
|