[Spice-devel] [PATCH 03/12] qxl-wddm-dod: Introduce TimeMeasurement class for timing debugging

Frediano Ziglio fziglio at redhat.com
Tue Mar 21 12:04:02 UTC 2017


> 
> In release build this class resolved to empty statements.
> In debug build it is useful for measurement of execution time.
> 
> Signed-off-by: Yuri Benditovich <yuri.benditovich at daynix.com>
> ---
>  qxldod/QxlDod.h | 35 +++++++++++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
> 
> diff --git a/qxldod/QxlDod.h b/qxldod/QxlDod.h
> index f441f4b..324b940 100755
> --- a/qxldod/QxlDod.h
> +++ b/qxldod/QxlDod.h
> @@ -225,6 +225,41 @@ typedef struct _CURRENT_BDD_MODE
>      } FrameBuffer;
>  } CURRENT_BDD_MODE;
>  
> +#if DBG
> +class TimeMeasurement
> +{
> +public:
> +    TimeMeasurement()
> +    {
> +        Start();
> +    }
> +    void Start()
> +    {
> +        KeQuerySystemTime(&li1);
> +    }
> +    void Stop()
> +    {
> +        KeQuerySystemTime(&li2);
> +    }
> +    ULONG Diff()
> +    {
> +        return (ULONG)((li2.QuadPart - li1.QuadPart) / 10000);
> +    }
> +protected:

This seems to indicate that the class is written to be a base
class but there's no virtual destructor.

> +    LARGE_INTEGER li1;
> +    LARGE_INTEGER li2;
> +};
> +#else
> +class TimeMeasurement
> +{
> +public:
> +    TimeMeasurement() {}
> +    void Start() {}
> +    void Stop() {}
> +    ULONG Diff() { return 0; }
> +};
> +#endif
> +

It's also possible to use the class in weird way having negative numbers
(just call Start after Stop). Would not something like this prevent these issues?

class TimeMeasurement
{
public:
    TimeMeasurement()
    {
#if DBG
        KeQuerySystemTime(&li_start);
#endif
    }
    ULONG Elapsed() const 
    {
#if DBG
        LARGE_INTEGER li_end;
        KeQuerySystemTime(&li_end);
        return (ULONG)((li_end.QuadPart - li_end.QuadPart) / 10000);
#else
        return 0; 
#endif
    }
private:
#if DBG
    LARGE_INTEGER li1;
#endif
};


>  class QxlDod;
>  
>  class HwDeviceInterface {

Frediano


More information about the Spice-devel mailing list