From d2d121cb82692a4d2983652e2a89fc8e8bef98df Mon Sep 17 00:00:00 2001 From: CaS Date: Sat, 29 Oct 2005 03:01:50 +0000 Subject: [PATCH] Implement description git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/performance/trunk@21900 72102866-910b-0410-8b05-ffd578937521 --- GSThroughput.m | 67 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 62 insertions(+), 5 deletions(-) diff --git a/GSThroughput.m b/GSThroughput.m index eeaa8fe..1bbeb8e 100644 --- a/GSThroughput.m +++ b/GSThroughput.m @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -68,6 +69,7 @@ typedef struct { NSTimeInterval max; // Longest duration NSTimeInterval min; // Shortest duration NSTimeInterval sum; // Total (sum of durations for event) + unsigned tick; } Info; typedef struct { @@ -227,19 +229,64 @@ typedef struct { - (NSString*) description { - NSString *n = my->name; + NSString *n = my->name; + NSMutableString *m; + unsigned i; if (n == nil) { n = [super description]; } - // FIXME - return n; + m = [n mutableCopy]; + if (my->second > 0) + { + [m appendString: @"\nCurrent minute:\n"]; + for (i = 0; i < my->second; i++) + { + Info *info = &my->seconds[i]; + NSTimeInterval ti = info->tick + baseTime; + + [m appendFormat: @"%u, %g, %g, %g, %@\n", + info->cnt, info->max, info->min, info->sum, + [NSDate dateWithTimeIntervalSinceReferenceDate: ti]]; + } + } + + if (my->minute > 0) + { + [m appendString: @"\nCurrent hour:\n"]; + for (i = 0; i < my->minute; i++) + { + Info *info = &my->minutes[i]; + NSTimeInterval ti = info->tick + baseTime; + + [m appendFormat: @"%u, %g, %g, %g, %@\n", + info->cnt, info->max, info->min, info->sum, + [NSDate dateWithTimeIntervalSinceReferenceDate: ti]]; + } + } + + if (my->hour > 0) + { + [m appendString: @"\nCurrent day:\n"]; + for (i = 0; i < my->hour; i++) + { + Info *info = &my->hours[i]; + NSTimeInterval ti = info->tick + baseTime; + + [m appendFormat: @"%u, %g, %g, %g, %@\n", + info->cnt, info->max, info->min, info->sum, + [NSDate dateWithTimeIntervalSinceReferenceDate: ti]]; + } + } + + return AUTORELEASE(m); } - (id) init { - unsigned i; + NSCalendarDate *c; + unsigned i; for (i = 0; i < 24; i++) { @@ -251,6 +298,14 @@ typedef struct { my->minutes[i].min = MAXDURATION; } my->last = GSThroughputTimeTick() - 1; + c = [[NSCalendarDate alloc] initWithTimeIntervalSinceReferenceDate: lastTime]; + my->second = [c secondOfMinute]; + my->minute = [c minuteOfHour]; + my->hour = [c hourOfDay]; + RELEASE(c); + my->seconds[my->second].tick = my->last; + my->minutes[my->minute].tick = my->last; + my->hours[my->hour].tick = my->last; return self; } @@ -268,7 +323,6 @@ typedef struct { { unsigned tick = GSThroughputTimeTick(); - // FIXME while (my->last < tick) { Info *info; @@ -318,18 +372,21 @@ typedef struct { info->max = 0.0; info->min = MAXDURATION; info->sum = 0.0; + info->tick = tick; } info = &my->minutes[my->minute]; info->cnt = 0; info->max = 0.0; info->min = MAXDURATION; info->sum = 0.0; + info->tick = tick; } info = &my->seconds[my->second]; info->cnt = 0; info->max = 0.0; info->min = MAXDURATION; info->sum = 0.0; + info->tick = tick; my->last++; }