--- /dev/null
+%!TEX root = ../hdrmain.tex
+
+\begin{figure}[htb]
+ \centering
+ \definecolor{cellred}{rgb} {0.98,0.17,0.15}
+ \definecolor{cellblue}{rgb} {0.17,0.60,0.99}
+ \definecolor{celldarkred}{rgb} {0.68,0.15,0.13}
+ \definecolor{celldarkblue}{rgb} {0.15,0.40,0.69}
+ %
+ \newcommand{\labelcell}[2]{
+ \node[minimum width=1.0cm, minimum height=.75cm,text width=3.0cm, align=center, outer sep=0, column sep=0cm](#1) {\textbf{#2}};
+ }
+ \newcommand{\bluecell}[3]{
+ \node[minimum width=1.2cm, minimum height=1.2cm,fill=cellblue, text=white,text width=1.2cm, align=center, rounded corners=1mm, outer sep=0](#3) at (#1) {#2};
+ }
+ \newcommand{\redcell}[3]{
+ \node[minimum width=1.2cm, minimum height=1.2cm,fill=cellred, text=white,text width=1.2cm, align=center, rounded corners=1mm, outer sep=0](#3) at (#1) {#2};
+ }
+ \newcommand{\darkbluecell}[3]{
+ \node[minimum width=1.2cm, minimum height=1.2cm,fill=celldarkblue, text=white,text width=1.2cm, align=center, rounded corners=1mm, outer sep=0](#3) at (#1) {#2};
+ }
+ \newcommand{\darkredcell}[3]{
+ \node[minimum width=1.2cm, minimum height=1.2cm,fill=celldarkred, text=white,text width=1.2cm, align=center, rounded corners=1mm, outer sep=0](#3) at (#1) {#2};
+ }
+ \newcommand{\dashedcell}[3]{
+ \node[minimum width=1.2cm, minimum height=1.2cm,dashed, text=black, draw=black, text width=1.2cm, align=center, rounded corners=1mm, outer sep=0](#3) at (#1) {#2};
+ }
+ %\tikzexternalenable
+ \begin{tikzpicture}
+ \scriptsize
+ \begin{scope}[x=1mm, y=1mm]
+
+ %\node[anchor=south west] () at (0, 55) {Device};
+ %\draw[very thick] (0,55) -- (170,55);
+
+ \redcell{15,65}{User action}{}
+ \dashedcell{30,65}{HID sent}{mousehid}
+ \darkbluecell{125,65}{Sytem response}{}
+
+ \draw[fill=black!10, rounded corners=2mm] (0,0) rectangle (170,55);
+
+ \node[anchor=south west] () at (0, 10) {Host computer};
+ \draw[very thick] (0,10) -- (170,10);
+
+ \bluecell{45,20}{Raw HID received}{rawhidreceived1}
+ \draw[ultra thick] (45,8) -- (45,12);
+ \node[anchor=north] () at (45, 8) {piezo};
+ \dashedcell{60,20}{HID received}{hosthid}
+ \draw[ultra thick] (60,8) -- (60,12);
+ \node[anchor=north] () at (60, 8) {libpointing};
+ \dashedcell{75,20}{Low-level event}{}
+ \draw[ultra thick] (75,8) -- (75,12);
+ \node[anchor=north] () at (75, 8) {system};
+ \dashedcell{90,20}{Event delivered}{}
+ \draw[ultra thick] (90,8) -- (90,12);
+ \node[anchor=north] () at (90, 8) {toolkit};
+ \dashedcell{105,20}{Window repaint}{}
+ \draw[ultra thick] (105,8) -- (105,12);
+ \node[anchor=north] () at (105, 8) {repaint};
+ \dashedcell{120,20}{Screen update}{}
+ \draw[ultra thick] (120,8) -- (120,12);
+ \node[anchor=north] () at (120, 8) {screen};
+ \darkbluecell{160,20}{Raw HID received}{rawhidreceived2}
+ \draw[ultra thick] (160,8) -- (160,12);
+ \node[anchor=north] () at (160, 8) {photodiode};
+
+ \node[anchor=south west] () at (0, 35) {Arduino};
+ \draw[very thick] (0,35) -- (170,35);
+
+ \bluecell{20,45}{Piezo trigger}{}
+ \draw[ultra thick] (20,33) -- (20,37);
+ \node[anchor=north] () at (20, 33) {piezo};
+ \bluecell{35,45}{Raw HID sent}{rawhidsent1}
+ \darkbluecell{135,45}{Photo-diode trigger}{}
+ \draw[ultra thick] (135,33) -- (135,37);
+ \node[anchor=north] () at (135, 33) {photodiode};
+ \darkbluecell{150,45}{Raw HID sent}{rawhidsent2}
+
+ \path[-{Stealth[length=2mm, width=1.5mm]}, dashed, to path={-| (\tikztotarget)}] (mousehid) edge (hosthid);
+ \path[-{Stealth[length=2mm, width=1.5mm]}, dashed, to path={-| (\tikztotarget)}] (rawhidsent1) edge (rawhidreceived1);
+ \path[-{Stealth[length=2mm, width=1.5mm]}, dashed, to path={-| (\tikztotarget)}] (rawhidsent2) edge (rawhidreceived2);
+
+ \end{scope}
+ \end{tikzpicture}
+ %\tikzexternaldisable
+ \caption[LagMeter measurement process.]{LagMeter measurement process.}
+ \label{fig:lagmeter}
+\end{figure}
Every interactive system has a delay between the moment users perform an action and when the system produces a response.
This delay is refered to as \defword{end-to-end latency}.
This latency is known to cause performance and usability issues~\cite{deber15,jota13,teather09,waltemate16}.
-Therefore, there are research studies about strategies to mitigate these effects or reduce latency~\cite{nancel18}.
+Therefore, there are research studies about strategies to mitigate these effects or reduce latency~\cite{cattan15,nancel18}.
In order to reduce latency or its effects, it is importantto measure it, and understand the contribution of each part of the system to it.
-There are many possible sources of latency: the input and output, the software and hardware, the device and the host.
-Typical latency measurement methods used high-speed cameras~\cite{ng12,steed08,teather09}.
-The method is simple, but it is difficult to make many measurements and it is impossible to slice the latency between the several steps of the process.
+There are many possible sources of latency: input and output, software and hardware, device and host.
+Typical latency measurement methods consisted in counting frames on videos made with a high-speed camera~\cite{ng12,steed08,teather09}.
+This method is simple, but tedious.
+It is difficult to make large series of measurements and it is impossible to identify the main sources of latency.
+Other methods enable repetitive measures, but they are adapted to specific input types~\cite{casiez15,deber16}.
+Therefore, we created the LagMeter: a latency measurement tool that facilitates repetitive measures, and enables the slicing of latency between several parts of the interactive system~\cite{casiez17}.
+It measures the end-to-end latency between any tap-based input (keyboard, mouse, touchpad, touchscreen, …) and the resulting change on the screen.
-%Any interactive system exhibits some delay between a user’s action and the corresponding system response, known as the end-to-end latency. This latency is caused by many factors pertaining to the input device, the operating system (e.g. de- vice drivers, control and communication policies), the soft- ware toolkits and application used, as well as the output de- vice. Depending on its amount and variation over time (jit- ter), the end-to-end latency can degrade the action-perception loop, impact user performance and make the system feel less responsive and interactive.
+
+%Any interactive system exhibits some delay between a user’s action and the corresponding system response, known as the end-to-end latency. This latency is caused by many factors pertaining to the input device, the operating system (e.g. device drivers, control and communication policies), the soft- ware toolkits and application used, as well as the output device. Depending on its amount and variation over time (jitter), the end-to-end latency can degrade the action-perception loop, impact user performance and make the system feel less responsive and interactive.
%Latency has long been known to affect performance and user perception in indirect pointing tasks, Virtual Reality and touch interactions [1, 8–10, 12, 13, 16, 21]. While today’s touchscreens show latencies ranging from 50 to 200 ms [14], it is known that users can perceive touchscreen latency as low as 2 ms [14] and that performance for dragging tasks degrades above 25 ms [10]. In indirect interaction, latencies above 50 ms are noticed and affect performance [8, 9].
%Considering the importance of latency in interactive systems, it is essential to measure and report it, to assess how it af- fects users or the results of an experiment. Until recently, its measure has been a tedious process based on the use of external cameras [11, 14, 15, 18–21] but methods have been proposed to ease the process through interactive tools [2, 6] or repeated measures [3, 7]. These tools can be used to try to reduce latency but it can be a trial and error process without the understanding of the influence of each part of a system. In addition, none of the measurement tools allows to measure end-to-end latency while a user interacts with the system, and existing tools are limited to specific technologies.
-
-Latency \cite{casiez17}
-
-previous work on latency measurement:
-camera, counting frames
-hammer time…
-mouse casiez 2016
+\input{figures/lagmeter.tex}
Our method is usable with any tap-based input: keyboard, mouse, touchpad, touchscreen.
Slicing of latency with software probes.