summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llcommon/lltrace.h4
-rw-r--r--indra/llcommon/llunit.h65
-rw-r--r--indra/newview/llscenemonitor.cpp58
3 files changed, 54 insertions, 73 deletions
diff --git a/indra/llcommon/lltrace.h b/indra/llcommon/lltrace.h
index d6b51a63ee..c485552061 100644
--- a/indra/llcommon/lltrace.h
+++ b/indra/llcommon/lltrace.h
@@ -656,7 +656,7 @@ class EventStatHandle
: public TraceType<EventAccumulator>
{
public:
- typedef typename LLUnits::HighestPrecisionType<T>::type_t storage_t;
+ typedef typename F64 storage_t;
typedef TraceType<EventAccumulator> trace_t;
EventStatHandle(const char* name, const char* description = NULL)
@@ -696,7 +696,7 @@ class CountStatHandle
: public TraceType<CountAccumulator>
{
public:
- typedef typename LLUnits::HighestPrecisionType<T>::type_t storage_t;
+ typedef typename F64 storage_t;
typedef TraceType<CountAccumulator> trace_t;
CountStatHandle(const char* name, const char* description = NULL)
diff --git a/indra/llcommon/llunit.h b/indra/llcommon/llunit.h
index e2803c74b0..c617d2a87f 100644
--- a/indra/llcommon/llunit.h
+++ b/indra/llcommon/llunit.h
@@ -423,11 +423,13 @@ struct HighestPrecisionType<LLUnit<UNIT_TYPE, STORAGE_TYPE> >
typedef typename HighestPrecisionType<STORAGE_TYPE>::type_t type_t;
};
-#define LL_DECLARE_DERIVED_UNIT(conversion_factor, base_unit_name, unit_name) \
+#define LL_DECLARE_DERIVED_UNIT(conversion_factor, base_unit_name, unit_name, unit_label) \
struct unit_name \
{ \
typedef base_unit_name base_unit_t; \
+ static const char* sUnitLabel; \
}; \
+const char* unit_name::sUnitLabel = unit_label; \
template<typename STORAGE_TYPE> \
struct ConversionFactor<unit_name, base_unit_name, STORAGE_TYPE> \
{ \
@@ -446,34 +448,39 @@ struct ConversionFactor<base_unit_name, unit_name, STORAGE_TYPE> \
} \
}
-struct Bytes { typedef Bytes base_unit_t; };
-LL_DECLARE_DERIVED_UNIT(1024, Bytes, Kilobytes);
-LL_DECLARE_DERIVED_UNIT(1024 * 1024, Bytes, Megabytes);
-LL_DECLARE_DERIVED_UNIT(1024 * 1024 * 1024, Bytes, Gigabytes);
-LL_DECLARE_DERIVED_UNIT(1.0 / 8.0, Bytes, Bits);
-LL_DECLARE_DERIVED_UNIT(1024 / 8, Bytes, Kilobits);
-LL_DECLARE_DERIVED_UNIT(1024 / 8, Bytes, Megabits);
-LL_DECLARE_DERIVED_UNIT(1024 * 1024 * 1024 / 8, Bytes, Gigabits);
-
-struct Seconds { typedef Seconds base_unit_t; };
-LL_DECLARE_DERIVED_UNIT(60, Seconds, Minutes);
-LL_DECLARE_DERIVED_UNIT(60 * 60, Seconds, Hours);
-LL_DECLARE_DERIVED_UNIT(1.0 / 1000.0, Seconds, Milliseconds);
-LL_DECLARE_DERIVED_UNIT(1.0 / 1000000.0, Seconds, Microseconds);
-LL_DECLARE_DERIVED_UNIT(1.0 / 1000000000.0, Seconds, Nanoseconds);
-
-struct Meters { typedef Meters base_unit_t; };
-LL_DECLARE_DERIVED_UNIT(1000, Meters, Kilometers);
-LL_DECLARE_DERIVED_UNIT(1.0 / 100.0, Meters, Centimeters);
-LL_DECLARE_DERIVED_UNIT(1.0 / 1000.0, Meters, Millimeters);
-
-struct Hertz { typedef Hertz base_unit_t; };
-LL_DECLARE_DERIVED_UNIT(1000, Hertz, Kilohertz);
-LL_DECLARE_DERIVED_UNIT(1000 * 1000, Hertz, Megahertz);
-LL_DECLARE_DERIVED_UNIT(1000 * 1000 * 1000, Hertz, Gigahertz);
-
-struct Radians { typedef Radians base_unit_t; };
-LL_DECLARE_DERIVED_UNIT(DEG_TO_RAD, Radians, Degrees);
+struct Bytes { typedef Bytes base_unit_t; static const char* sUnitLabel;};
+const char* Bytes::sUnitLabel = "B";
+LL_DECLARE_DERIVED_UNIT(1024, Bytes, Kilobytes, "KiB");
+LL_DECLARE_DERIVED_UNIT(1024 * 1024, Bytes, Megabytes, "MiB");
+LL_DECLARE_DERIVED_UNIT(1024 * 1024 * 1024, Bytes, Gigabytes, "GiB");
+LL_DECLARE_DERIVED_UNIT(1.0 / 8.0, Bytes, Bits, "b");
+LL_DECLARE_DERIVED_UNIT(1024 / 8, Bytes, Kilobits, "Kib");
+LL_DECLARE_DERIVED_UNIT(1024 / 8, Bytes, Megabits, "Mib");
+LL_DECLARE_DERIVED_UNIT(1024 * 1024 * 1024 / 8, Bytes, Gigabits, "Gib");
+
+struct Seconds { typedef Seconds base_unit_t; static const char* sUnitLabel; };
+const char* Seconds::sUnitLabel = "s";
+LL_DECLARE_DERIVED_UNIT(60, Seconds, Minutes, "min");
+LL_DECLARE_DERIVED_UNIT(60 * 60, Seconds, Hours, "h");
+LL_DECLARE_DERIVED_UNIT(1.0 / 1000.0, Seconds, Milliseconds, "ms");
+LL_DECLARE_DERIVED_UNIT(1.0 / 1000000.0, Seconds, Microseconds, "\x09\x3cs");
+LL_DECLARE_DERIVED_UNIT(1.0 / 1000000000.0, Seconds, Nanoseconds, "ns");
+
+struct Meters { typedef Meters base_unit_t; static const char* sUnitLabel; };
+const char* Meters::sUnitLabel = "m";
+LL_DECLARE_DERIVED_UNIT(1000, Meters, Kilometers, "km");
+LL_DECLARE_DERIVED_UNIT(1.0 / 100.0, Meters, Centimeters, "cm");
+LL_DECLARE_DERIVED_UNIT(1.0 / 1000.0, Meters, Millimeters, "mm");
+
+struct Hertz { typedef Hertz base_unit_t; static const char* sUnitLabel; };
+const char* Hertz::sUnitLabel = "Hz";
+LL_DECLARE_DERIVED_UNIT(1000, Hertz, Kilohertz, "KHz");
+LL_DECLARE_DERIVED_UNIT(1000 * 1000, Hertz, Megahertz, "MHz");
+LL_DECLARE_DERIVED_UNIT(1000 * 1000 * 1000, Hertz, Gigahertz, "GHz");
+
+struct Radians { typedef Radians base_unit_t; static const char* sUnitLabel;};
+const char* Radians::sUnitLabel = "rad";
+LL_DECLARE_DERIVED_UNIT(DEG_TO_RAD, Radians, Degrees, "deg");
} // namespace LLUnits
#endif // LL_LLUNIT_H
diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp
index 1bbd6ae2b9..1a5b43c703 100644
--- a/indra/newview/llscenemonitor.cpp
+++ b/indra/newview/llscenemonitor.cpp
@@ -492,18 +492,18 @@ void LLSceneMonitor::fetchQueryResult()
//dump results to a file _scene_xmonitor_results.csv
void LLSceneMonitor::dumpToFile(std::string file_name)
-{
- using namespace LLTrace;
+{ using namespace LLTrace;
+
if (!hasResults()) return;
LL_INFOS("SceneMonitor") << "Saving scene load stats to " << file_name << LL_ENDL;
std::ofstream os(file_name.c_str());
- os << std::setprecision(4);
+ os << std::setprecision(3);
PeriodicRecording& scene_load_recording = mSceneLoadRecording.getAcceptedRecording();
- U32 frame_count = scene_load_recording.getNumPeriods();
+ const U32 frame_count = scene_load_recording.getNumPeriods();
LLUnit<LLUnits::Seconds, F64> frame_time;
@@ -515,7 +515,8 @@ void LLSceneMonitor::dumpToFile(std::string file_name)
}
os << std::endl;
- for (CountStatHandle<F64>::instance_iter it = CountStatHandle<F64>::beginInstances(), end_it = CountStatHandle<F64>::endInstances();
+ typedef TraceType<CountAccumulator> trace_count;
+ for (trace_count::instance_iter it = trace_count::beginInstances(), end_it = trace_count::endInstances();
it != end_it;
++it)
{
@@ -538,30 +539,9 @@ void LLSceneMonitor::dumpToFile(std::string file_name)
}
}
- for (CountStatHandle<S64>::instance_iter it = CountStatHandle<S64>::beginInstances(), end_it = CountStatHandle<S64>::endInstances();
- it != end_it;
- ++it)
- {
- std::ostringstream row;
- row << it->getName();
-
- S32 samples = 0;
-
- for (S32 i = frame_count - 1; i >= 0; --i)
- {
- samples += scene_load_recording.getPrevRecording(i).getSampleCount(*it);
- row << ", " << scene_load_recording.getPrevRecording(i).getSum(*it);
- }
-
- row << std::endl;
-
- if (samples > 0)
- {
- os << row.str();
- }
- }
+ typedef TraceType<EventAccumulator> trace_event;
- for (EventStatHandle<F64>::instance_iter it = EventStatHandle<F64>::beginInstances(), end_it = EventStatHandle<F64>::endInstances();
+ for (trace_event::instance_iter it = trace_event::beginInstances(), end_it = trace_event::endInstances();
it != end_it;
++it)
{
@@ -584,7 +564,9 @@ void LLSceneMonitor::dumpToFile(std::string file_name)
}
}
- for (EventStatHandle<S64>::instance_iter it = EventStatHandle<S64>::beginInstances(), end_it = EventStatHandle<S64>::endInstances();
+ typedef TraceType<SampleAccumulator> trace_sample;
+
+ for (trace_sample::instance_iter it = trace_sample::beginInstances(), end_it = trace_sample::endInstances();
it != end_it;
++it)
{
@@ -607,27 +589,19 @@ void LLSceneMonitor::dumpToFile(std::string file_name)
}
}
- for (TraceType<SampleAccumulator>::instance_iter it = TraceType<SampleAccumulator>::beginInstances(), end_it = TraceType<SampleAccumulator>::endInstances();
+ typedef TraceType<MemStatAccumulator> trace_mem;
+ for (trace_mem::instance_iter it = trace_mem::beginInstances(), end_it = trace_mem::endInstances();
it != end_it;
++it)
{
- std::ostringstream row;
- row << it->getName();
-
- S32 samples = 0;
+ os << it->getName();
for (S32 i = frame_count - 1; i >= 0; --i)
{
- samples += scene_load_recording.getPrevRecording(i).getSampleCount(*it);
- row << ", " << scene_load_recording.getPrevRecording(i).getMean(*it);
+ os << ", " << scene_load_recording.getPrevRecording(i).getSum(*it).as<LLUnits::Megabytes>().value();
}
- row << std::endl;
-
- if (samples > 0)
- {
- os << row.str();
- }
+ os << std::endl;
}
os.flush();