[Development] QTBUG-43096 - QML instantiation performance decadence

Thiago Macieira thiago.macieira at intel.com
Sat May 26 15:15:00 CEST 2018

On Saturday, 26 May 2018 03:38:27 -03 Jean-Michaƫl Celerier wrote:
> It's not about subclassing QQuickControl, it's about running code without a
> JIT / interpreter. Even if the cost in startup time and performance is
> minimal, it is not as fast as raw C++ code - and there's nothing wrong with
> wanting Qt to run on a lightbulb... some lightbulbs today have better CPUs
> than the ones Qt was originally developed on.

I know you're making an exaggeration here for the sake of the argument, but 
it's not correct.

First, Qt has considerably grown since 1.0. Just compare the size of the 
downloads from Qt 1.4 (available somewhere in download.qt.io, see Paul's blog) 
to 5.11. QtCore alone, today, is multiple times the size of the full Qt of 
back then.

Second, no, Qt has never run on a CPU as tiny as you can find today on 
microcontrollers being deployed for IoT today. Those are still measured in 
tens of kilobytes of RAM with maybe a hundred kilobyte of flash storage. The 
only indicator that is comparable to the mainstay computers of 20 years ago is 
the clock: the microcontrollers run at tens of MHz, which is what the original 
Pentium from 1991 did (60 MHz).

You may be thinking of processors as powerful as a Raspberry Pi Zero. Trust 
me, that is NOT what you would deploy to a light bulb, temperature sensor, 
humidity sensor, etc.  You wouldn't even find that on a controller device with 
a simple screen, like a thermostat similar to the Google Nest: a system like 
you find on routers today (8-32 MB of flash storage, 32-128 MB of RAM, a CPU 
running at 200-600 MHz) more than suffices.

Qt *could* run at the higher end of those, with a lot of compromises to make 
it fit. Which is why I don't think Qt has a role to play in these types of 
devices. Instead, Qt is far more likely to play in the industrial segment 
where devices need complex Human Machine Interfaces (HMI) and monitoring 
capabilities. Devices are also far more costly, since they aren't going for 
mass-market strategies.

Finally, there's one more segment Qt could play, but it doesn't exist yet: 
microservices. If we start seeing controllers like I described replaced by a 
bigger device capable of installing and running multiple services, 
configurable by the user, then some of those could be Qt. Those microservices 
are likely to simply be Linux containers, so you should be expecting the host 
device to be like a Raspberry Pi or a low-end Intel Atom CPU with 1 GB of RAM 
or so.

[It goes without saying that Qt could be used for digital signage, but it's a 
stretch to call those IoT]

Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

More information about the Development mailing list