[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Patch: cpu-all.h for better cycle counter
From: |
Marc Lörner |
Subject: |
Re: [Qemu-devel] Patch: cpu-all.h for better cycle counter |
Date: |
Tue, 27 Mar 2007 07:33:48 +0100 |
User-agent: |
KMail/1.6.2 |
On Monday 26 March 2007 22:37, andrzej zaborowski wrote:
> On 26/03/07, Marc Lörner <address@hidden> wrote:
> > On Monday 26 March 2007 00:08, andrzej zaborowski wrote:
> > > On 26/03/07, andrzej zaborowski <address@hidden> wrote:
> >
> > <snip>
> >
> > > > > +# warning non-optimized CPU
> > > > > +#include <sys/time.h>
> > > > > +#include <time.h>
> > > > > +
> > > > > static inline int64_t cpu_get_real_ticks (void)
> > > > > {
> > > > > - static int64_t ticks = 0;
> > > > > - return ticks++;
> > > > > + struct timeval tv;
> > > > > + static int64_t i = 0;
> > > > > + int64_t j;
> > > > > +
> > > > > + gettimeofday(&tv, NULL);
> > > > > + do {
> > > > > + j = (tv.tv_sec * (uint64_t) 1000000) + tv.tv_usec;
> > > > > + } while (i == j);
> > > > > + i = j;
> > > > > + return j;
> > > >
> > > > Isn't this an infinite loop? gettimeofday() was left out of the loop.
> > > >
> > > > How about "return j + (ticks++)" instead of the loop? If I understand
> > > > correctly it may slow things down to below 1Hz.
> > >
> > > (I wanted to say MHz)
> >
> > I dont think so, in the loop "j" is set and the while-condition is
> > "j==i", so unless "(tv.tv_sec * (uint64_t) 1000000) + tv.tv_usec" always
> > computes the same value the do-while block gets only executed once.
>
> Well, it does always compute the same value - inside the loop. Doesn't
> it? And across one microsecond also the same value in all calls to
> cpu_get_real_ticks.
>
> <snip>
>
> Regards
okay, sometimes one doesn't see the wood for the trees.
The over and over computation of the same value doesn't make sense,
so the call of gettimeofday should be in the loop (i think).
--
Freundliche Gruesse,
Marc Lörner
Tel.: +49 (0)9103-715-30046
Fax.: +49 (0)9103-715-271
Internet: http://www.hob.de
E-Mail: address@hidden
HOB GmbH & Co. KG
Schwadermühlstraße 3
90556 Cadolzburg
Geschaeftsfuehrer Klaus Brandstaetter - Franz Wiedenmann
AG Fuerth HRA 5180
Steuer-Nr. 218/163/00107
USt-ID-Nr. DE 132747002
Komplementaerin HOB electronic BeteiligungsGmbH
AG Fuerth HRB 3416