% language=us

\startcomponent about-mobility

\environment about-environment

\startchapter[title=Flash forward]

\startsection[title=Introduction]

At the 2013 \CONTEXT\ meeting in Breslov, Harald König has taken some of his
gadgets with him and this time the target was to get \CONTEXT\ running on small
devices, most noticeably a mobile phone. You may wonder what purpose this serves,
but with such devices becoming more powerful each year, and desktops and laptops
getting less popular, we might see the small devices taking their place.
Especially when we can dock them in a cradle and connect them to a proper monitor
and keyboard we might end up with universal devices. Combine that with projection
on our retinas and less tactile input and it will be clear that we should at
least look into this from the perspective of \TEX\ usage.

\stopsection

\startsection[title=The tests]

We used five tests for measuring basic performance. Of course we made sure that
binaries and resources were cached.

Test 1 measures some basics, like typesetting a paragraph, flushing pages and
loading a file. Because we do lots of pages we can also see if garbage collection
is a problem.

\typefile{pi-speed-1.tex}

A normal \CONTEXT\ run is triggered with:

\starttyping
context speed-1
\stoptyping

but with

\starttyping
context --timing speed-1
\stoptyping

memory consumption is measured and one can generate a visual representation of
this afterwards.

\starttyping
context --extra=timing speed-1
\stoptyping

We don't show them here, simply because we saw nothing exciting in the ones
for these tests.

The second test is rather stupid but it gives an indication of how efficient the
base pagebuilder is:

\typefile{pi-speed-2.tex}

The numbers are normally 10 to 20 times more impressive than those for regular runs.

Test three is a variation on test one but this time we avoid the file being read
in many times, so we inline \type{ward.tex}. We also add no page breaks so we get
less pages but with more content.

\typefile{pi-speed-3.tex}

The fourth test draws a few \METAPOST\ graphics, which themselves use a bit of
typeset text.

\typefile{pi-speed-4.tex}

The last test, number five, is more demanding. Here we use some colors (which
stresses the backend) and a dynamic switch to smallcaps, which puts a bit of a
burden on the \OPENTYPE\ handler.

\typefile{pi-speed-5.tex}

\stopsection

\startsection[title=Regular laptops]

We started measuring on Haralds laptop, a Lenovo X201i, and got the following
timings (that matched our expectations). The second column shows the runtime, the
last column the pages per second.

\starttabulate[|l|r|r|]
\BC speed-1 \NC  5.8 \NC  17.1 \NC \NR
\BC speed-2 \NC  3.6 \NC 275.6 \NC \NR
\BC speed-3 \NC  5.1 \NC  19.8 \NC \NR
\BC speed-4 \NC  0.6 \NC   1.8 \NC \NR
\BC speed-5 \NC 11.9 \NC  10.6 \NC \NR
\stoptabulate

Just for comparison, as I'm wrapping this up in 2016, on my current Dell 7600 I
get these timings (the last two columns are with \LUAJITTEX):

\starttabulate[|l|r|r|r|r|]
\BC speed-1 \NC  4.6 \NC  21.9 \NC 3.0 \NC  33.5 \NC \NR
\BC speed-2 \NC  3.6 \NC 278.2 \NC 2.8 \NC 357.7 \NC \NR
\BC speed-3 \NC  4.2 \NC  23.6 \NC 2,7 \NC  37.0 \NC \NR
\BC speed-4 \NC  0.8 \NC   1.3 \NC 0.6 \NC   1.7 \NC \NR
\BC speed-5 \NC  6.2 \NC  20.3 \NC 4.0 \NC  31.9 \NC \NR
\stoptabulate

These tests were run with a \LUATEX\ 0.98 and the most recent \CONTEXT\
\OPENTYPE\ font processor. As we do more in \LUA\ that a few years back, one
can't expect a much faster run, even when the Dell has a faster processor than
the Lenovo. However, what gets noticed is that the fifth speed test runs about
twice as fast which is mostly due to improvements in the handling of \OPENTYPE\
features.

\startsection[title=The Nexus IV]

This mobile phone has a quad-core arm processor running at 1.5 GHz. With 2 Gb
memory this should be sufficient for running \TEX. The operating system is
Android, which means that some effort is needed to put \TEX\ with its resources
on the internal flash disk. Access was remote from a laptop.

\starttabulate[|l|r|r|]
\BC speed-1 \NC 41.9 \NC  2.4 \NC \NR
\BC speed-2 \NC 27.5 \NC 36.4 \NC \NR
\BC speed-3 \NC 38.7 \NC  2.6 \NC \NR
\BC speed-4 \NC  3.4 \NC  3.0 \NC \NR
\BC speed-5 \NC 87.9 \NC  1.4 \NC \NR
\stoptabulate

So it looks like the phone runs these tests about five times slower than the
laptop. The fifth test is most stressful on the hardware but as noted, a more
recent \CONTEXT\ will give better times there due to improvements in feature
processing.

\stopsection

\startsection[title=The Raspbery Pi]

The Pi (we're talking of the first model here) has an extension bus and can be
used to control whatever device, it has more the properties (and build) of a
media player and indeed there are dedicated installations for that. But as this
popular small device can host any \LINUX\ distribution this is what was done. The
distribution of choice was OpenSuse. The setup was really experimental with an
unboxed Pi, an unframed \LCD\ panel, a keyboard and mouse, a power supply and
some wires to connect this all. With an ethernet cable running directly to the
router a distribution could be fetched and installed.

This device has a single core arm processor running at 700 Mhz with half a
gigabyte of memory. Persistent memory is a flash card, not that fast but
acceptable. The maximum read speed was some 20 MB per second. It was no real
surprise that the set of tests ran much slower than on the phone.

It took a bit of experimenting but a 200 Mhz overclock of the \CPU\ combined with
overclocked memory made performance jump up. In fact, we got a speed that we
could somehow relate to the phone that has a more modern \CPU\ and runs at 1.5
times that speed.

Being a regular \LINUX\ setup, installation was more straightforward than on the
phone but of course it took a while before all was in place. The default clock
timings are:

\starttabulate[|l|r|r|]
\BC speed-1 \NC  95.841 \NC  1.043 \NC \NR
\BC speed-2 \NC  76.817 \NC 13.018 \NC \NR
\BC speed-3 \NC  84.890 \NC  1.178 \NC \NR
\BC speed-4 \NC  13.241 \NC  0.076 \NC \NR
\BC speed-5 \NC 192.288 \NC  0.660 \NC \NR
\stoptabulate

Again, the main conclusion here is that documents that need lots of \OPENTYPE\
feature juggling, this is not the best platform.

\stopsection

\startsection[title=Summary]

We see small devices gaining more performance each iteration than larger
machines. Their screens and input method also evolve at a higher speed. The
question is if arm will keep dominating this segment, but at least it is clear
that they are useable for \TEX\ processing. Keep in mind that we used \LUATEX,
which means that we also have \LUA\ with its garbage collector. Add \CONTEXT\ to
that, which is not that small and preloads quite some resources, and it will be
clear that these devices actually perform quite well, given slower memory, slower
disks, small caches etc. With down|-|scaled intel chips showing up it can only
get better. Keep in mind that we only need one core, so the speed of one core
matters more than having multiple cores available, although the other cores can
be wasted on keeping up with your social demands on such a device in parallel
with the \TEX\ run.

A runtime five to ten times slower than a decent laptop is not something that we
look forward to in a production environment, but when you're on the road it is
quite okay, especially if it can replace a somewhat heavy portable workstation
like we do. Okay, how much \TEX\ processing do you need when mobile, but still.
As vendors of server hardware are looking into high density servers with lots of
small fast processors, we might at some point actually use \TEX\ on such
hardware. By then performance might be en par with virtual machines running on
average loaded machines.

We are pretty sure that on following \CONTEXT\ meetings more such experiments
will be done so we'll keep you posted.

\stopsection

\stopchapter

\stopcomponent

