On Tue, Mar 21, 2017 at 2:04 PM, Frediano Ziglio <fziglio@xxxxxxxxxx> wrote:
This seems to indicate that the class is written to be a base>
> 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@xxxxxxxxxx>
> ---
> 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:
class but there's no virtual destructor.
This just indicated that these members are not intended to be accessed directly.
No derived classes in plans.
> + 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
};
This way is much less easy when used during debugging/profiling
in different procedures. Declaring several timers at single line of the code does not allow
to start and stop each one of them when needed. During profiling different timers are
started/stopped independently and printed together.
> class QxlDod;
>
> class HwDeviceInterface {
Frediano
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel