Re: [PATCH] Add ElapsedTimeToString to format execution time in a more readable manner (instead of showing everything as msec)

From: Ashesh Vashi <ashesh(dot)vashi(at)enterprisedb(dot)com>
To: John Obaterspok <john(dot)obaterspok(at)gmail(dot)com>
Cc: pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>
Subject: Re: [PATCH] Add ElapsedTimeToString to format execution time in a more readable manner (instead of showing everything as msec)
Date: 2015-06-12 04:50:07
Message-ID: CAG7mmoxBWuFt14TXa-61zhkeNXt0i32pB9n=E64LGtVFCz6Uqw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hi John,

Can you please add comments for the below piece of code for explanation?
-----
*@@ -3088,13 +3090,22 @@ void frmQuery::OnTimer(wxTimerEvent &event)*
* }*

* // Increase the granularity for longer running queries*
*- if (elapsedQuery > 200 && timer.GetInterval() == 10 &&
timer.IsRunning())*
*+ if (timer.IsRunning())*
* {*
*- timer.Stop();*
*- timer.Start(100);*
*+ if (elapsedQuery > 200 && timer.GetInterval() < 100)*
*+ {*
*+ timer.Stop();*
*+ timer.Start(100);*
*+ }*
*+ else if (elapsedQuery > 60 * 1000 && timer.GetInterval() < 1000)*
*+ {*
*+ timer.Stop();*
*+ timer.Start(1000);*
*+ }*

-----

And, please send patch as an attachment.

--

Thanks & Regards,

Ashesh Vashi
EnterpriseDB INDIA: Enterprise PostgreSQL Company
<http://www.enterprisedb.com>

*http://www.linkedin.com/in/asheshvashi*
<http://www.linkedin.com/in/asheshvashi>

On Fri, Jun 12, 2015 at 1:50 AM, John Obaterspok <john(dot)obaterspok(at)gmail(dot)com>
wrote:

> Add ElapsedTimeToString to format execution time in a more readable
> manner (instead of showing everything as msec)
>
> Signed-off-by: John Obaterspok <john(dot)obaterspok(at)gmail(dot)com>
>
> diff --git a/pgadmin/dlg/dlgClasses.cpp b/pgadmin/dlg/dlgClasses.cpp
> index 9a3e473..e6fa488 100644
> --- a/pgadmin/dlg/dlgClasses.cpp
> +++ b/pgadmin/dlg/dlgClasses.cpp
> @@ -562,7 +562,7 @@ void ExecutionDialog::OnOK(wxCommandEvent &ev)
> {
> if (txtMessages)
> txtMessages->AppendText(_("Total query runtime: ")
> - + (wxGetLocalTimeMillis() -
> startTime).ToString() + wxT(" ms."));
> + + ElapsedTimeToString(wxGetLocalTimeMillis() -
> startTime));
>
> btnOK->SetLabel(_("Done"));
> btnCancel->Disable();
> diff --git a/pgadmin/frm/frmMain.cpp b/pgadmin/frm/frmMain.cpp
> index 8629dda..94528e8 100644
> --- a/pgadmin/frm/frmMain.cpp
> +++ b/pgadmin/frm/frmMain.cpp
> @@ -1352,9 +1352,7 @@ void frmMain::EndMsg(bool done)
> {
> // Get the execution time & display it
> float timeval = stopwatch.Time();
> - wxString time;
> - time.Printf(_("%.2f secs"), (timeval / 1000));
> - statusBar->SetStatusText(time, 2);
> + statusBar->SetStatusText(ElapsedTimeToString(timeval), 2);
>
> // Display the 'Done' message
> if (done)
> @@ -1362,7 +1360,7 @@ void frmMain::EndMsg(bool done)
> else
> statusBar->SetStatusText(timermsg + _(" Failed."), 1);
>
> - wxLogStatus(wxT("%s (%s)"), timermsg.c_str(), time.c_str());
> + wxLogStatus(wxT("%s (%s)"), timermsg.c_str(),
> ElapsedTimeToString(timeval).c_str());
> wxEndBusyCursor();
> }
> }
> diff --git a/pgadmin/frm/frmQuery.cpp b/pgadmin/frm/frmQuery.cpp
> index 110bbc7..6198c83 100644
> --- a/pgadmin/frm/frmQuery.cpp
> +++ b/pgadmin/frm/frmQuery.cpp
> @@ -55,6 +55,7 @@
> #include "utils/sysLogger.h"
> #include "utils/sysSettings.h"
> #include "utils/utffile.h"
> +#include "utils/misc.h"
> #include "pgscript/pgsApplication.h"
>
> // Icons
> @@ -2711,7 +2712,7 @@ void frmQuery::OnQueryComplete(pgQueryResultEvent
> &ev)
> msgHistory->AppendText(str);
>
> elapsedQuery = wxGetLocalTimeMillis() - startTimeQuery;
> - SetStatusText(elapsedQuery.ToString() + wxT(" ms"), STATUSPOS_SECS);
> + SetStatusText(ElapsedTimeToString(elapsedQuery), STATUSPOS_SECS);
>
> if (sqlResult->RunStatus() != PGRES_TUPLES_OK)
> {
> @@ -2724,28 +2725,28 @@ void frmQuery::OnQueryComplete(pgQueryResultEvent
> &ev)
> OID insertedOid = sqlResult->InsertedOid();
> if (insertedCount < 0)
> {
> - showMessage(wxString::Format(_("Query returned successfully with no
> result in %s ms."),
> - elapsedQuery.ToString().c_str()), _("OK."));
> + showMessage(wxString::Format(_("Query returned successfully with no
> result in %s."),
> + ElapsedTimeToString(elapsedQuery).c_str()),
> _("OK."));
> }
> else if (insertedCount == 1)
> {
> if (insertedOid)
> {
> - showMessage(wxString::Format(_("Query returned successfully: one row
> with OID %ld inserted, %s ms execution time."),
> - (long)insertedOid,
> elapsedQuery.ToString().c_str()),
> + showMessage(wxString::Format(_("Query returned successfully: one row
> with OID %ld inserted, %s execution time."),
> + (long)insertedOid,
> ElapsedTimeToString(elapsedQuery).c_str()),
> wxString::Format(_("One row with OID %ld inserted."),
> (long)insertedOid));
> }
> else
> {
> - showMessage(wxString::Format(_("Query returned successfully: one row
> affected, %s ms execution time."),
> - elapsedQuery.ToString().c_str()),
> + showMessage(wxString::Format(_("Query returned successfully: one row
> affected, %s execution time."),
> + ElapsedTimeToString(elapsedQuery).c_str()),
> wxString::Format(_("One row affected.")));
> }
> }
> else
> {
> - showMessage(wxString::Format(_("Query returned successfully: %d rows
> affected, %s ms execution time."),
> - insertedCount,
> elapsedQuery.ToString().c_str()),
> + showMessage(wxString::Format(_("Query returned successfully: %d rows
> affected, %s execution time."),
> + insertedCount,
> ElapsedTimeToString(elapsedQuery).c_str()),
> wxString::Format(_("%d rows affected."), insertedCount));
> }
> }
> @@ -2865,9 +2866,9 @@ void frmQuery::OnQueryComplete(pgQueryResultEvent
> &ev)
>
> sqlResult->DisplayData();
>
> - SetStatusText(elapsedQuery.ToString() + wxT(" ms"), STATUSPOS_SECS);
> + SetStatusText(ElapsedTimeToString(elapsedQuery), STATUSPOS_SECS);
>
> - str = _("Total query runtime: ") + elapsedQuery.ToString() + wxT("
> ms.\n") ;
> + str = _("Total query runtime: ") + ElapsedTimeToString(elapsedQuery) +
> "\n";
> msgResult->AppendText(str);
> msgHistory->AppendText(str);
>
> @@ -2952,9 +2953,10 @@ void frmQuery::OnScriptComplete(wxCommandEvent &ev)
>
> // Manage timer
> elapsedQuery = wxGetLocalTimeMillis() - startTimeQuery;
> - SetStatusText(elapsedQuery.ToString() + wxT(" ms"), STATUSPOS_SECS);
> + wxString fmtExecTime = ElapsedTimeToString(elapsedQuery);
> + SetStatusText(fmtExecTime, STATUSPOS_SECS);
> SetStatusText(_("pgScript completed."), STATUSPOS_MSGS);
> - wxString str = _("Total pgScript runtime: ") + elapsedQuery.ToString()
> + wxT(" ms.\n\n");
> + wxString str = _("Total pgScript runtime: ") + fmtExecTime + "\n\n";
> msgHistory->AppendText(str);
>
> // Check whether there was an error/exception
> @@ -3078,7 +3080,7 @@ void frmQuery::completeQuery(bool done, bool
> explain, bool verbose)
> void frmQuery::OnTimer(wxTimerEvent &event)
> {
> elapsedQuery = wxGetLocalTimeMillis() - startTimeQuery;
> - SetStatusText(elapsedQuery.ToString() + wxT(" ms"), STATUSPOS_SECS);
> + SetStatusText(ElapsedTimeToString(elapsedQuery), STATUSPOS_SECS);
>
> wxString str = sqlResult->GetMessagesAndClear();
> if (!str.IsEmpty())
> @@ -3088,13 +3090,22 @@ void frmQuery::OnTimer(wxTimerEvent &event)
> }
>
> // Increase the granularity for longer running queries
> - if (elapsedQuery > 200 && timer.GetInterval() == 10 &&
> timer.IsRunning())
> + if (timer.IsRunning())
> {
> - timer.Stop();
> - timer.Start(100);
> + if (elapsedQuery > 200 && timer.GetInterval() < 100)
> + {
> + timer.Stop();
> + timer.Start(100);
> + }
> + else if (elapsedQuery > 60 * 1000 && timer.GetInterval() < 1000)
> + {
> + timer.Stop();
> + timer.Start(1000);
> + }
> }
> }
>
> +
> // Adjust sizes of GQB components, Located here because need to
> // avoid some issues when implementing inside controller/view Classes
> void frmQuery::adjustGQBSizes()
> diff --git a/pgadmin/include/utils/misc.h b/pgadmin/include/utils/misc.h
> index abef297..07713ae 100644
> --- a/pgadmin/include/utils/misc.h
> +++ b/pgadmin/include/utils/misc.h
> @@ -117,6 +117,7 @@ wxString NumToStr(double value);
> wxString NumToStr(OID value);
> wxString NumToStr(wxLongLong value);
> wxString DateToStr(const wxDateTime &datetime);
> +wxString ElapsedTimeToString(wxLongLong msec);
>
>
> // Quoting
> diff --git a/pgadmin/utils/misc.cpp b/pgadmin/utils/misc.cpp
> index b7d8afe..9a134fb 100644
> --- a/pgadmin/utils/misc.cpp
> +++ b/pgadmin/utils/misc.cpp
> @@ -219,6 +219,28 @@ wxString DateToStr(const wxDateTime &datetime)
> }
>
>
> +wxString ElapsedTimeToString(wxLongLong msec)
> +{
> + wxTimeSpan tsMsec(0, 0, 0, msec);
> +
> + int days = tsMsec.GetDays();
> + int hours = (wxTimeSpan(tsMsec.GetHours(), 0, 0, 0) - wxTimeSpan(days *
> 24)).GetHours();
> + int minutes = (wxTimeSpan(0, tsMsec.GetMinutes(), 0, 0) -
> wxTimeSpan(hours)).GetMinutes();
> + long seconds = (wxTimeSpan(0, 0, tsMsec.GetSeconds(), 0) -
> wxTimeSpan(0, minutes)).GetSeconds().ToLong();
> + long milliseconds = (wxTimeSpan(0, 0, 0, tsMsec.GetMilliseconds()) -
> wxTimeSpan(0, 0, seconds)).GetMilliseconds().ToLong();
> +
> + if (days > 0)
> + return wxString::Format("%d %s, %02d:%02d:%02ld hours", days,
> wxT("days"), hours, minutes, seconds);
> + else if (hours > 0)
> + return wxString::Format("%02d:%02d:%02ld hours", hours, minutes,
> seconds);
> + else if (msec >= 1000 * 60)
> + return wxString::Format("%02d:%02ld minutes", minutes, seconds);
> + else if (msec >= 1000)
> + return wxString::Format("%ld.%ld secs", seconds, milliseconds / 100);
> + else
> + return msec.ToString() + wxT(" msec");
> +}
> +
> wxDateTime StrToDateTime(const wxString &value)
> {
> wxDateTime dt;
>
>

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Sanket Mehta 2015-06-12 06:20:46 Re: [PATCH] Fix crash when disabling auto commit
Previous Message John Obaterspok 2015-06-11 20:20:52 [PATCH] Add ElapsedTimeToString to format execution time in a more readable manner (instead of showing everything as msec)