[2/2] Determine the iteration count based on wallclock instead of user+system time.
Commit Message
Hi Ulrich,
This patch will combine with "Tracepoint for ppc64" into one patch.
Is this ok?
Thanks,
Wei-cheng
---
gdb/testsuite/ChangeLog
2015-08-23 Wei-cheng Wang <cole945@gmail.com>
* gdb.trace/tspeed.c (myclock): Return wallclock instead of
user+system time.
(trace_speed_test): Determine the iteration count for a time
between 15..30 seconds.
---
gdb/testsuite/gdb.trace/tspeed.c | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
Comments
On 20/08/15 19:32, Wei-cheng Wang wrote:
> Hi Ulrich,
>
> This patch will combine with "Tracepoint for ppc64" into one patch.
> Is this ok?
>
> Thanks,
> Wei-cheng
>
This patch has been accepted half a year ago, and the author has
disappeared. It fixes the same underlying issue as my patch at
https://sourceware.org/ml/gdb-patches/2016-01/msg00716.html . Since
this patch seems to be a smarter fix, I'd like to abandon mine, and go
with that one instead. I've just checked it - works just fine and fixes
the problem on s390{,x}-ibm-linux-gnu, no regressions on
x86_64-unknown-linx-gnu.
OK to push?
> ---
>
> gdb/testsuite/ChangeLog
>
> 2015-08-23 Wei-cheng Wang <cole945@gmail.com>
>
> * gdb.trace/tspeed.c (myclock): Return wallclock instead of
> user+system time.
> (trace_speed_test): Determine the iteration count for a time
> between 15..30 seconds.
> ---
> gdb/testsuite/gdb.trace/tspeed.c | 16 ++++++----------
> 1 file changed, 6 insertions(+), 10 deletions(-)
>
> diff --git a/gdb/testsuite/gdb.trace/tspeed.c b/gdb/testsuite/gdb.trace/tspeed.c
> index ca4c7bf..c9e212c 100644
> --- a/gdb/testsuite/gdb.trace/tspeed.c
> +++ b/gdb/testsuite/gdb.trace/tspeed.c
> @@ -56,13 +56,9 @@ int nspertp = 0;
> unsigned long long
> myclock ()
> {
> - struct timeval tm, tm2;
> - struct rusage ru;
> - getrusage (RUSAGE_SELF, &ru);
> - tm = ru.ru_utime;
> - tm2 = ru.ru_stime;
> - return (((unsigned long long) tm.tv_sec) * 1000000) + tm.tv_usec
> - + (((unsigned long long) tm2.tv_sec) * 1000000) + tm2.tv_usec;
> + struct timeval tm;
> + gettimeofday (&tm, NULL);
> + return (((unsigned long long) tm.tv_sec) * 1000000) + tm.tv_usec;
> }
>
> int
> @@ -162,9 +158,9 @@ trace_speed_test (void)
> return -1;
>
> if (idelta > mindelta
> - /* Total test time should be between 2 and 5 seconds. */
> - && (total1 + total2) > (2 * 1000000)
> - && (total1 + total2) < (5 * 1000000))
> + /* Total test time should be between 15 and 30 seconds. */
> + && (total1 + total2) > (15 * 1000000)
> + && (total1 + total2) < (30 * 1000000))
> {
> nsdelta = (((unsigned long long) idelta) * 1000) / iters;
> printf ("Second loop took %d ns longer per iter than first\n", nsdelta);
>
@@ -56,13 +56,9 @@ int nspertp = 0;
unsigned long long
myclock ()
{
- struct timeval tm, tm2;
- struct rusage ru;
- getrusage (RUSAGE_SELF, &ru);
- tm = ru.ru_utime;
- tm2 = ru.ru_stime;
- return (((unsigned long long) tm.tv_sec) * 1000000) + tm.tv_usec
- + (((unsigned long long) tm2.tv_sec) * 1000000) + tm2.tv_usec;
+ struct timeval tm;
+ gettimeofday (&tm, NULL);
+ return (((unsigned long long) tm.tv_sec) * 1000000) + tm.tv_usec;
}
int
@@ -162,9 +158,9 @@ trace_speed_test (void)
return -1;
if (idelta > mindelta
- /* Total test time should be between 2 and 5 seconds. */
- && (total1 + total2) > (2 * 1000000)
- && (total1 + total2) < (5 * 1000000))
+ /* Total test time should be between 15 and 30 seconds. */
+ && (total1 + total2) > (15 * 1000000)
+ && (total1 + total2) < (30 * 1000000))
{
nsdelta = (((unsigned long long) idelta) * 1000) / iters;
printf ("Second loop took %d ns longer per iter than first\n", nsdelta);