summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerassetstats.cpp
diff options
context:
space:
mode:
authorMonty Brandenberg <monty@lindenlab.com>2010-12-11 16:16:07 -0500
committerMonty Brandenberg <monty@lindenlab.com>2010-12-11 16:16:07 -0500
commitbb53d27b7ad6e7bb7b1871f103b221703d56e4d2 (patch)
treed889b5503e0d9adfca20fc88f97985577d974ed3 /indra/newview/llviewerassetstats.cpp
parent11d420dd32e643a191c16b04f2fbb42c2b4db628 (diff)
ESC-211 ESC-212 Use arrays in payload to grid and compact payload
First, introduced a compact payload format that allows blocks of metrics to be dropped from the viewer->collector payload compressing 1200 bytes of LLSD into about 300, give-or-take. Then converted to using LLSD arrays in the payload to enumerate the regions encountered. This simplifies much data handling from the viewer all the way into the final formatter of the metrics on the grid.
Diffstat (limited to 'indra/newview/llviewerassetstats.cpp')
-rw-r--r--indra/newview/llviewerassetstats.cpp42
1 files changed, 26 insertions, 16 deletions
diff --git a/indra/newview/llviewerassetstats.cpp b/indra/newview/llviewerassetstats.cpp
index 399d62d2fc..5ad7725b3e 100644
--- a/indra/newview/llviewerassetstats.cpp
+++ b/indra/newview/llviewerassetstats.cpp
@@ -33,6 +33,7 @@
#include "llviewerprecompiledheaders.h"
#include "llviewerassetstats.h"
+#include "llregionhandle.h"
#include "stdtypes.h"
@@ -258,7 +259,7 @@ LLViewerAssetStats::recordFPS(F32 fps)
}
LLSD
-LLViewerAssetStats::asLLSD()
+LLViewerAssetStats::asLLSD(bool compact_output)
{
// Top-level tags
static const LLSD::String tags[EVACCount] =
@@ -290,7 +291,7 @@ LLViewerAssetStats::asLLSD()
const duration_t now = LLViewerAssetStatsFF::get_timestamp();
mCurRegionStats->accumulateTime(now);
- LLSD regions = LLSD::emptyMap();
+ LLSD regions = LLSD::emptyArray();
for (PerRegionContainer::iterator it = mRegionStats.begin();
mRegionStats.end() != it;
++it)
@@ -307,16 +308,25 @@ LLViewerAssetStats::asLLSD()
for (int i = 0; i < LL_ARRAY_SIZE(tags); ++i)
{
- LLSD & slot = reg_stat[tags[i]];
- slot = LLSD::emptyMap();
- slot[enq_tag] = LLSD(S32(stats.mRequests[i].mEnqueued.getCount()));
- slot[deq_tag] = LLSD(S32(stats.mRequests[i].mDequeued.getCount()));
- slot[rcnt_tag] = LLSD(S32(stats.mRequests[i].mResponse.getCount()));
- slot[rmin_tag] = LLSD(F64(stats.mRequests[i].mResponse.getMin() * 1.0e-6));
- slot[rmax_tag] = LLSD(F64(stats.mRequests[i].mResponse.getMax() * 1.0e-6));
- slot[rmean_tag] = LLSD(F64(stats.mRequests[i].mResponse.getMean() * 1.0e-6));
+ PerRegionStats::prs_group & group(stats.mRequests[i]);
+
+ if ((! compact_output) ||
+ group.mEnqueued.getCount() ||
+ group.mDequeued.getCount() ||
+ group.mResponse.getCount())
+ {
+ LLSD & slot = reg_stat[tags[i]];
+ slot = LLSD::emptyMap();
+ slot[enq_tag] = LLSD(S32(stats.mRequests[i].mEnqueued.getCount()));
+ slot[deq_tag] = LLSD(S32(stats.mRequests[i].mDequeued.getCount()));
+ slot[rcnt_tag] = LLSD(S32(stats.mRequests[i].mResponse.getCount()));
+ slot[rmin_tag] = LLSD(F64(stats.mRequests[i].mResponse.getMin() * 1.0e-6));
+ slot[rmax_tag] = LLSD(F64(stats.mRequests[i].mResponse.getMax() * 1.0e-6));
+ slot[rmean_tag] = LLSD(F64(stats.mRequests[i].mResponse.getMean() * 1.0e-6));
+ }
}
+ if ((! compact_output) || stats.mFPS.getCount())
{
LLSD & slot = reg_stat["fps"];
slot = LLSD::emptyMap();
@@ -326,12 +336,12 @@ LLViewerAssetStats::asLLSD()
slot[mean_tag] = LLSD(F64(stats.mFPS.getMean()));
}
- reg_stat["duration"] = LLSD::Real(stats.mTotalTime * 1.0e-6);
- std::stringstream reg_handle;
- reg_handle.width(16);
- reg_handle.fill('0');
- reg_handle << std::hex << it->first;
- regions[reg_handle.str()] = reg_stat;
+ U32 grid_x(0), grid_y(0);
+ grid_from_region_handle(it->first, &grid_x, &grid_y);
+ reg_stat["grid_x"] = LLSD::Integer(grid_x);
+ reg_stat["grid_y"] = LLSD::Integer(grid_y);
+ reg_stat["duration"] = LLSD::Real(stats.mTotalTime * 1.0e-6);
+ regions.append(reg_stat);
}
LLSD ret = LLSD::emptyMap();