[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