From eae0846942bba59c214f81d1464cf6a56c5044c2 Mon Sep 17 00:00:00 2001 From: lsv Date: Mon, 7 Oct 2024 10:40:28 +0500 Subject: [PATCH] Optimizr topactivity widget MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Оптимизация CPU нагрузки, мелкие ошибки. --- ctl/ctlTreeJSON.cpp | 10 ++++++++-- ctl/wxTopActivity.cpp | 5 ++++- frm/frmStatus.cpp | 4 ++-- include/ctl/wxTopActivity.h | 1 + utils/WaitSample.cpp | 4 ++-- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/ctl/ctlTreeJSON.cpp b/ctl/ctlTreeJSON.cpp index 46aef9c..bd977af 100644 --- a/ctl/ctlTreeJSON.cpp +++ b/ctl/ctlTreeJSON.cpp @@ -588,12 +588,18 @@ void ctlTreeJSON::RefreshImageList() { dc.DrawRectangle(0, 0, w, h); images.push_back(wxBitmapBundle(bmp)); - SetItemImage(item, n); - wxString s = GetItemText(item); + //SetItemImage(item, n); + //wxString s = GetItemText(item); n++; } if (images.size() > 0) { SetImages(images); + n = 0; + for (const auto& [item, color] : colors) { + SetItemImage(item, n); + n++; + } + } } void ctlTreeJSON::LoadInTree(wxJSONValue& jval, const wxTreeItemId& idParent) { diff --git a/ctl/wxTopActivity.cpp b/ctl/wxTopActivity.cpp index 82c5ff7..571163a 100644 --- a/ctl/wxTopActivity.cpp +++ b/ctl/wxTopActivity.cpp @@ -681,9 +681,11 @@ void wxTopActivity::render(wxDC& dc) /// Detail panel auto dt = xAxis[selIdx]; int endt = ws->d_time(dt.GetValue().GetValue()); + //if (endt < 0) endt = m_agg_int; //endt -= m_agg_int; std::vector* smp = ws->GetSamples(); - int start_t = ws->GetHomeInterval(m_RightTime, m_agg_int) - selIdx * m_agg_int; + //int start_t = ws->GetHomeInterval(m_RightTime, m_agg_int) - selIdx * m_agg_int; + int start_t = endt - m_agg_int; int ps = ws->getPositionByTime(start_t); Sample sa; @@ -1298,6 +1300,7 @@ END_EVENT_TABLE() bool topDataViewCtrl::CalcRowsDataView(bool force, bool IsPidFirst) { int sel_left = top->getTimeSelRange(true); + agg = top->getAggregateInterval(); int sel_right = top->getTimeSelRange(false); if (sel_left > -1 && sel_right > -1) { // set select range diff --git a/frm/frmStatus.cpp b/frm/frmStatus.cpp index f4c245a..57ec82d 100644 --- a/frm/frmStatus.cpp +++ b/frm/frmStatus.cpp @@ -2027,8 +2027,8 @@ void frmStatus::OnRefreshStatusTimer(wxTimerEvent& event) )isClientReadTransaction = true; WS.AddSample(pid, isClientReadTransaction, backend_type, dataSet1->GetVal("wait_sample")); - wxULongLong qid = dataSet1->GetLongLong("query_id"); - WS.AddQuery(qid.GetValue(), qry); + //wxULongLong qid = dataSet1->GetLongLong("query_id"); + //WS.AddQuery(qid.GetValue(), qry); } statusList->SetItem(row, colpos++, blockedby); if (!slinfo.IsEmpty()) { diff --git a/include/ctl/wxTopActivity.h b/include/ctl/wxTopActivity.h index 58fe9f2..7369703 100644 --- a/include/ctl/wxTopActivity.h +++ b/include/ctl/wxTopActivity.h @@ -392,6 +392,7 @@ class wxTopActivity : public wxControl public: wxTopActivity(wxWindow* parent, WaitSample* WS, wxSize sz); wxSize DoGetBestClientSize(); + int getAggregateInterval() { return m_agg_int; }; void setViewRange(int m_aggregate_interval, int RightTime); WaitSample* getViewRange(int& m_aggregate_interval, int& RightTime); void paintEvent(wxPaintEvent& evt); diff --git a/utils/WaitSample.cpp b/utils/WaitSample.cpp index 0408800..b80d3bb 100644 --- a/utils/WaitSample.cpp +++ b/utils/WaitSample.cpp @@ -235,7 +235,7 @@ int WaitSample::GetHomeInterval(int timeEnd, int AggrigateInterval) { //wxDateTime t(l); } int WaitSample::getPositionByTime(int time) { - + if (time < 0) time = 0; int max = smp.size() - 1; int min = 0; int i = (max - min) / 2; @@ -422,7 +422,7 @@ int WaitSample::GetGroupingData(int timeEnd, int needCountGroup, int groupInterv } else { // new interval - wxLongLong l(basetime + homeInt); + wxLongLong l(basetime + homeInt+ groupInterval); wxDateTime t(l); xAxisValue.push_back(t); std::vector itog(summary.size());