Название: Измерение времени Отправлено: thechicho от Сентябрь 30, 2011, 20:14 Подскажите, как измерять время?
Аналог на php: Код: $start = microtime(1); Название: Re: Измерение времени Отправлено: Пантер от Сентябрь 30, 2011, 20:18 QTime::elapsed () ?
Название: Re: Измерение времени Отправлено: andrewshkovskii от Сентябрь 30, 2011, 20:20 ну для этого надо было бы вызвать сначала start/restart.
Просто этот парень доку не читает, не допер бы. Название: Re: Измерение времени Отправлено: kambala от Сентябрь 30, 2011, 20:21 еще clock() можно
Название: Re: Измерение времени Отправлено: thechicho от Сентябрь 30, 2011, 20:53 // Просто этот парень доку не читает, не допер бы.
за базар ответишь? а ваще поставь себя на мое место. чо бы ты там стал читать, чтобы найти ответ на мой вопрос? все?! я уже зае ее читать! а ответ на подобные вопросы, бывает приходится искать часами! поэтому и спросил тут. сорри, просто реально устал. сложно дается, т.к. не знаю плюсы ( не надо советовать их учить ток, я понемногу разбираюсь на реальных примерах, а теорию читать не вижу больше смысла, т.к. прочитал эту х http://valera.asf.ru/cpp/book/ (ВСЕ прочитал) и ничо не понял - примеры не разбирал правда, ибо там какая-то лажа или университетский уровень (аля числа фибоначи и прочая х, кот. мне никогда не пригодится) ) сенкс, за ваши ответы. буду пробовать. Название: Re: Измерение времени Отправлено: andrewshkovskii от Сентябрь 30, 2011, 21:13 Молодой человек, прошу Вас, успокойтесь, я могу и ответить, если хотите - Вам не понравиться.
Поставил - c qt поставляется отличный асистент с контекстным поиском и индексированием, набираешь time.. находишь класс QTime, логически подумать как измерить время -> находишь нужные методы - все просто, достаточно подумать. С Вашим подходом к изучению программирования у Вас так мало что выйдет, говнокод да и только. Я понимаю что ПХП Вам позволило просто создавать сайтики, но этого мало, что бы по-настоящему программировать. Название: Re: Измерение времени Отправлено: thechicho от Сентябрь 30, 2011, 21:23 красиво говорите!
но Вы не поняли о чем я. мне проги нужны для своих нужд, я не собираюсь работать кодером на Qt (нафик этот геморрой). так что и говнокод сойдет для начала, лишь бы прога делала то, что мне надо!!! хотя не отказался бы от советов по оптимизации говнокода! (чтобы прога быстрее работала) а вот на эстетику кода и все такое, мне пофик. // не понравиться пишется без ь. привет от http://lurkmore.ru/Grammar_nazi (http://lurkmore.ru/Grammar_nazi) . Вы бы с ним нашли общий язык полюбому) ы Название: Re: Измерение времени Отправлено: Igors от Сентябрь 30, 2011, 21:50 находишь класс QTime, логически подумать как измерить время -> находишь нужные методы - все просто, достаточно подумать. "Подумать" не требуется, тем более "логически". Берется готовый класс и пользуется. В подробности вдаваться не нужно, достаточно передрать пример (обычно с той же страницы где и описание класса). НапрЦитировать QTime t; t.start(); some_lengthy_task(); qDebug("Time elapsed: %d ms", t.elapsed()); Ну конечно подставить что-то свое вместо some_lengthy_task - и вот Вы уже вполне доросли чтобы обозвать кого-то говнокодером :) Название: Re: Измерение времени Отправлено: andrewshkovskii от Сентябрь 30, 2011, 22:18 Я в шоке. Хорошему учишь.
Название: Re: Измерение времени Отправлено: thechicho от Октябрь 01, 2011, 19:54 andrewshkovskii, Вы б лучше помогли.
подскажите, как... не знаю как это правильно называется. в общем в первом слоте: Код
в последнем: Код
как это делается? Название: Re: Измерение времени Отправлено: thechicho от Октябрь 01, 2011, 20:03 пробовал тупо добавить QElapsedTimer timer; в последнем слоте.
тогда: Код
The slow operation took 8593622089 milliseconds The slow operation took 8593622 seconds The slow operation took 143227 minutes хотя времени проходит секунд 15 Название: Re: Измерение времени Отправлено: kambala от Октябрь 01, 2011, 20:33 видимо timer.start(); забыл раз "пробовал тупо добавить QElapsedTimer timer;"
Название: Re: Измерение времени Отправлено: thechicho от Октябрь 01, 2011, 20:40 бл...
сложно так помочь чтоле? выше сообщение прочитай мое. Название: Re: Измерение времени Отправлено: kambala от Октябрь 01, 2011, 21:07 вот тебе рабочий код, ошибки у себя ищи сам:
Код
Цитата: Вывод Запускается C:\Qt\timer-build-desktop-Qt_4_7_4_for_Desktop_-_MSVC2008__Qt_SDK_________\debug\timer.exe... 0 10000 а, я вроде телепатически понял чего ты добиваешься (сам же не хочешь нормально описать что нужно) - узнавать в разных методах/слотах сколько времени прошло с момента запуска таймера. для этого надо поместить переменную типа QElapsedTimer в свой класс и запустить ей start() перед вызовом первого метода/слота, тогда ты сможешь обращаться к этой переменной в любом месте своего класса. Название: Re: Измерение времени Отправлено: BRE от Октябрь 01, 2011, 21:11 как это делается? Код
Название: Re: Измерение времени Отправлено: thechicho от Октябрь 01, 2011, 21:22 биг сенкс!
завтра буду пробовать. доброй ночи) Название: Re: Измерение времени Отправлено: thechicho от Октябрь 02, 2011, 10:01 // Запускается C:\Qt\timer-build-desktop-Qt_4_7_4_for_Desktop_-_MSVC2008__Qt_SDK_________\debug\timer.exe...
если галочку Use Shadow Building убрать, не будут левые папки создаваться :P // QElapsedTimer в свой класс и запустить ей start() перед вызовом первого метода/слота не. в первом слоте надо запускать :) // private: // QElapsedTimer timer; а в чем разница между private и public? вот если бы я написал: Код чо бы изменилось? Название: Re: Измерение времени Отправлено: thechicho от Октябрь 02, 2011, 10:18 //qint64 res = timer.elapsed();
qreal res = timer.elapsed(); в Qt есть средство для округления до сотых? или ток так http://www.qtforum.org/article/4680/round-a-double-to-2-decimal-places.html Название: Re: Измерение времени Отправлено: thechicho от Октябрь 02, 2011, 10:37 Sleep(10000);
как использовать? 'Sleep' was not declared in this scope ток так можно округлить до сотых? qreal res = timer.elapsed(); qreal sres = res/1000; qreal mres = sres/60; QString sresult = QString::number(sres, 'f', 2); qDebug() << "The slow operation took" << res << "milliseconds"; qDebug() << "The slow operation took" << sresult << "seconds"; qDebug() << "The slow operation took" << mresult << "minutes"; Название: Re: Измерение времени Отправлено: thechicho от Октябрь 02, 2011, 11:11 Код
как-то проще можно было сделать? Название: Re: Измерение времени Отправлено: kambala от Октябрь 02, 2011, 11:43 // Запускается C:\Qt\timer-build-desktop-Qt_4_7_4_for_Desktop_-_MSVC2008__Qt_SDK_________\debug\timer.exe... спасибо, кэпесли галочку Use Shadow Building убрать, не будут левые папки создаваться :P а в чем разница между private и public? иди изучай С++вот если бы я написал: Код чо бы изменилось? Sleep(10000); посмотреть внимательно на приведенный код или хотя бы просто нагуглить эту функцию и посмотреть в каком файле она объявлена. #include <Windows.h> (на юниксах есть своя функция sleep())как использовать? 'Sleep' was not declared in this scope Название: Re: Измерение времени Отправлено: Igors от Октябрь 02, 2011, 12:15 как-то проще можно было сделать? Проще не знаю, правильнее можно Код
Не Вы первый пытаетесь использовать форум как "живой хелп" :) Особо тяжкого преступления Вы не совершаете, но это просто неэффективно: пока напишете вопрос, пока дождетесь ответа (а потом отреагируете на заслуженное посылание к учебнику :)) - за это время самому несколько раз можно было разобраться. Спрашивайте обдуманно - и результат будет другим. Название: Re: Измерение времени Отправлено: kambala от Октябрь 02, 2011, 12:39 qint64 QElapsedTimer::elapsed() const
Название: Re: Измерение времени Отправлено: thechicho от Октябрь 02, 2011, 13:20 // спасибо, кэп
:P // иди изучай С++ дак это... я читал про эту фигню. там какие-то таблицы с наследованием. как чо меняется при наследовании и тп. но я не понял как надо рассуждать, когда пихаешь в public, или в private, или в protected. прост я запихал в паблик, проверил - работает. запихал в прайвит, тоже работает. вот и спросил какая-разница и из чего надо исходить, когда решаешь куда чо запихать. //посмотреть внимательно на приведенный код или хотя бы просто нагуглить эту функцию и посмотреть в каком файле она объявлена. #include <Windows.h> (на юниксах есть своя функция sleep()) дак я в ассистанте глянул, там в QThread ток было. я попробовал воткнуть в код, но чота не заработало...^^ а т.к. в Вашем примере вроде как должно работать, а никаких Qt инклюдов для этого не увидел, то подумал, что это не Qt-way и делается как-то через жопу, поэтому дальше искать не стал. оказалось, тупо надо было windows.h заинклюдить) сенкс заработало) Название: Re: Измерение времени Отправлено: thechicho от Октябрь 02, 2011, 13:35 О_о
дак если юзать Sleep(100000); прога (gui) зависает же... Название: Re: Измерение времени Отправлено: kambala от Октябрь 02, 2011, 13:46 вот и спросил какая-разница и из чего надо исходить, когда решаешь куда чо запихать. обычно в private (или в protected если собираешься в будущем наследоваться от этого класса и эти переменные будут нужны)О_о так никто ж и не спорит :) то был просто показательный пример корректного функционирования таймера.дак если юзать Sleep(100000); прога (gui) зависает же... Название: Re: Измерение времени Отправлено: thechicho от Октябрь 02, 2011, 14:23 // обычно в private
так почему. я не понимаю какая разница. и как мне надо думать, когда добавляю новый объект. вот Вы как рассуждаете, когда создаете новый объект какой-нить и решаете куда его запихать? с Sleep(); все пучком) работает как часы, во всех смыслах) Igors, да остаток не учел. сенкс:) правда немного подправил, т.к. в доке написано: Цитировать Warning: We do not recommend using QString::sprintf() in new Qt code. Instead, consider using QTextStream or arg(), both of which support Unicode strings seamlessly and are type-safe. Here's an example that uses QTextStream: в итоге получилось: Код
по поводу "живого хелпа". форум, имхо, как вариант, это средство взаимопомощи. я сам с радостью помогаю в том, в чем шарю. по поводу эффективности. разумеется, я сначала сам пытаюсь сделать. не получается, пишу на форум проблему и надеюсь, что кто-нить, кто шарит, поможет мне разобраться. быстрее разобраться! я же не сижу тупо и не жду, когда мне готовый код "принесут на блюдечке", в это время я пытаюсь решить проблему сам. или пока переключаюсь на решение других проблем, если в тупик тут захожу. как пример, вот тема http://www.prog.org.ru/topic_19577_0.html я сначала сам мучил, но не допер как сделать. потом на форуме написал в надежде, что кто-нить сталкивался с подобной проблемой и поможет мне ее решить побырому. но, когда я написал, я же тупо не сидел и не ждал, а сам пытался сделать чо мне надо. в итоге так ничо и не получилось у меня! потратил несколько часов! но, zenden, выручил, т.к. шарит в этом. все гениальное просто! я в шаге был от самостоятельного решения этой проблемы, но не додумал! вот, и таких моментов довольно много возникает, поэтому пишу на форум. и не вижу ничего в этом плохого, т.к. чем больше уникального контента на сайте, тем лучше:) может у кого-нить когда-нить подобная проблема тоже возникнет, он найдет эту тему и решит ее сразу. т.е. таким образом мы помогаем друг другу сократить время на решение банальны проблем! ну это в общем мое имхо) сенкс еще раз) Название: Re: Измерение времени Отправлено: kambala от Октябрь 02, 2011, 15:38 так почему. я не понимаю какая разница. и как мне надо думать, когда добавляю новый объект. вот Вы как рассуждаете, когда создаете новый объект какой-нить и решаете куда его запихать? в public выношу только те методы/константы, которые будет/может вызывать/считывать "пользователь" данного класса. если неконстантые переменные помещать в public, то "пользователь" сможет присваивать им что захочет, что может быть чревато. для этих целей создаются специальные методы-сеттеры, которые контролируют устанавливаемые значения.Название: Re: Измерение времени Отправлено: thechicho от Октябрь 02, 2011, 15:54 сенкс за ответ :)
помогите тут еще плз, я застрял http://www.prog.org.ru/topic_19579_0.html Название: Re: Измерение времени Отправлено: Igors от Октябрь 02, 2011, 20:22 прост я запихал в паблик, проверил - работает. запихал в прайвит, тоже работает. вот и спросил какая-разница и из чего надо исходить, когда решаешь куда чо запихать. "чо" и.т.п. - ну это может забавно первые пару раз, а потом начинает раздражать/утомлять/доставать :) Так что лучше без этой стилизации. По поводу public/private. В теории все просто: мол, объявляя private мы тем самым заявляем что можем менять эти внутренние данные как хотим - и эти изменения не коснутся других частей приложения, оно будет продолжать работать. В жизни все сложнее. Нет проблем сделать все private и насовать побольше get/set методов, но это само по себе еще ничего не дает - части приложения остаются столь же зависимы друг от друга. На эту тему можно написать массу диссертаций, но простого ответа нет Я часто применяю такой прием - сначала делаю все (ну или почти все) public и наблюдаю что получается плохо (где пошли злоупотребления). Потом меняю на private, добавляю методы (кстати довольно редко это простые get/set) - и дела идут лучше. Короче - познается на практике :) Название: Re: Измерение времени Отправлено: thechicho от Октябрь 03, 2011, 10:09 // начинает раздражать/утомлять/доставать
http://lurkmore.ru/Grammar_nazi :P // но это само по себе еще ничего не дает - части приложения остаются столь же зависимы друг от друга. На эту тему можно написать массу диссертаций, но простого ответа нет :o уж лучше практических примеров, от диссертаций ща (в настоящее время* ы) толку мало) // наблюдаю что получается плохо (где пошли злоупотребления) // простые get/set ??? // Короче - познается на практике :) сенкс :) буду делать как Вы. ток пихать все в private, чтоб не заморачиваться потом :D |