[banshee] [extras/metrics] Start adding some cool analysis
- From: Gabriel Burt <gburt src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [banshee] [extras/metrics] Start adding some cool analysis
- Date: Tue, 23 Feb 2010 01:18:21 +0000 (UTC)
commit ad9880ccd8caecb0c3e990fe7b501f38f243ca25
Author: Gabriel Burt <gabriel burt gmail com>
Date: Mon Feb 22 17:12:39 2010 -0800
[extras/metrics] Start adding some cool analysis
extras/metrics/MetaMetrics.cs | 41 ++++++++++++++++++++++++++++++++++++-
extras/metrics/MultiUserSample.cs | 5 +++-
2 files changed, 44 insertions(+), 2 deletions(-)
---
diff --git a/extras/metrics/MetaMetrics.cs b/extras/metrics/MetaMetrics.cs
index bf0c72f..ed17b74 100644
--- a/extras/metrics/MetaMetrics.cs
+++ b/extras/metrics/MetaMetrics.cs
@@ -31,16 +31,55 @@ namespace metrics
{
public class MetaMetrics
{
+ private HyenaSqliteConnection db;
+
public DateTime FirstReport { get; private set; }
public DateTime LastReport { get; private set; }
+
public MetaMetrics (HyenaSqliteConnection db)
{
+ this.db = db;
FirstReport = db.Query<DateTime> ("SELECT Stamp FROM Samples ORDER BY STAMP ASC");
LastReport = db.Query<DateTime> ("SELECT Stamp FROM Samples ORDER BY STAMP DESC");
Console.WriteLine ("First report was on {0}", FirstReport);
Console.WriteLine ("Last report was on {0}", LastReport);
Console.WriteLine ("Total unique users: {0}", db.Query<long> ("SELECT COUNT(DISTINCT(UserId)) FROM Samples"));
+
+ SummarizeTextual ("Env/CultureInfo");
+ SummarizeTextual ("Banshee/Configuration/core/io_provider");
+
+ SummarizeNumeric<TimeSpan> ("Banshee/RunDuration");
+
+ SummarizeNumeric<long> ("Banshee/Screen/Width");
+ SummarizeNumeric<long> ("Banshee/Screen/Height");
+ SummarizeNumeric<long> ("Banshee/Screen/NMonitors");
+ SummarizeTextual ("Banshee/Screen/IsComposited");
+
+ /*foreach (var metric in db.QueryEnumerable<string> ("SELECT DISTINCT(MetricName) as name FROM Samples ORDER BY name ASC")) {
+ Console.WriteLine (metric);
+ }*/
+ }
+
+ private void SummarizeNumeric<T> (string metric_name)
+ {
+ Console.WriteLine ("{0}:", metric_name);
+ Console.WriteLine (" Min: {0,-20}", db.Query<T> ("SELECT MIN(Value) FROM Samples WHERE MetricName = ?", metric_name));
+ Console.WriteLine (" Max: {0,-20}", db.Query<T> ("SELECT MAX(Value) FROM Samples WHERE MetricName = ?", metric_name));
+ Console.WriteLine (" Avg: {0,-20}", db.Query<T> ("SELECT AVG(Value) FROM Samples WHERE MetricName = ?", metric_name));
+ Console.WriteLine ();
+ }
+
+ private void SummarizeTextual (string metric_name)
+ {
+ Console.WriteLine ("{0}:", metric_name);
+ //Console.WriteLine (" Unique Values: {0,-20}", db.Query<long> ("SELECT COUNT(DISTINCT(Value)) FROM Samples WHERE MetricName = ?", metric_name));
+ using (var reader = new HyenaDataReader (db.Query ("SELECT COUNT(DISTINCT(UserId)) as users, Value FROM Samples WHERE MetricName = ? GROUP BY Value ORDER BY users DESC", metric_name))) {
+ while (reader.Read ()) {
+ Console.WriteLine (" {0,-5}: {1,-20}", reader.Get<long> (0), reader.Get<string> (1));
+ }
+ }
+ Console.WriteLine ();
}
}
-}
+}
\ No newline at end of file
diff --git a/extras/metrics/MultiUserSample.cs b/extras/metrics/MultiUserSample.cs
index 20bf1b3..4135aa1 100644
--- a/extras/metrics/MultiUserSample.cs
+++ b/extras/metrics/MultiUserSample.cs
@@ -44,6 +44,8 @@ namespace metrics
{
}
+ static DateTime value_dt;
+ static TimeSpan value_span;
public static void Import (string user_id, string metric_name, string stamp, object val)
{
var sample = new MultiUserSample ();
@@ -55,10 +57,11 @@ namespace metrics
sample.Stamp = stamp_dt;
}
- DateTime value_dt;
if (DateTimeUtil.TryParseInvariant (val as string, out value_dt)) {
// We want numeric dates to compare with
sample.Value = DateTimeUtil.ToTimeT (value_dt).ToString ();
+ } else if (TimeSpan.TryParse (val as string, out value_span)) {
+ sample.Value = value_span.TotalMilliseconds.ToString ();
} else {
sample.SetValue (val);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]