Performance characteristics of mobile vs. PC

Started by
0 comments, last by frob 10 years ago

What have turned out to be important performance characteristics when developing on mobile platforms vs. PC or consoles for you? What to watch out for?

For example, from what I can gather, branch prediction on mobile CPUs is not really a thing, or at least they're not as good as big PC x86 CPUs. I would also imagine that CPU performance vs. memory performance ratio is different, such that some optimizations that are invalid on PC architectures might become valid on mobile architectures(e.g. putting stuff in lookup-table instead of computing it on the fly when you're trying to trade off some cycles on CPU vs some cycles spent waiting for memory).

Also I think I heard somewhere that mobile GPUs function very differently from dedicated PC GPUs, with respect to how GPU code is executed (perhaps they don't have heavily SIMD-based execution like PC and console GPUs do?).

Also, is there maybe something similar to Agner's x86 software optimization resources for mobile CPUs?

Advertisement
It really boils down to an ARM vs x86 comparison. Both are good at different areas.

The goal of ARM chips has almost always been in performance per watt. The x86 chip is a powerful chip, often constrained by high temperatures and high power requirements. Even moving into the mobile space, the latest benchmarks show the Intel Atom chips consume about 4x the power than Cortex chips to achieve the same results.

There are also many variations within ARM processors. Coretex, Snapdragon, Tegra, and other lines all have different strengths and weaknesses.


Also I think I heard somewhere that mobile GPUs function very differently from dedicated PC GPUs, with respect to how GPU code is executed (perhaps they don't have heavily SIMD-based execution like PC and console GPUs do?).
Free sample chapter from OpenGL Insights on that matter: Performance tuning for tiled architectures.

Note that not all mobile GPUs do tiled rendering, some work just like very-low-power desktop GPUs.

About particular "mobile" CPU optimizations, you should honor the number 1 mantra of mobile computing: save battery.

On a (non-laptop) PC you typically have abundant power (and horsepower) and want everything to happen instantly, and don't care too much what it costs, wasting a few cycles extra is perfectly acceptable. On a laptop a bit less so, since it might run on battery (and laptop hardware usually doesn't have the same horsepower as comparative desktop hardware), but generally it's somewhat similar.

On a "real" mobile device, however, all that matters, really everything, is conserving power as much as you can. Because battery empty means end of game (literally).

That is, do what you need to do as fast as you can, turn your "effects knob" down a bit and avoid overly excessive stuff, and as soon as you don't have anything to do, enable the OS to put the CPU into sleep mode by calling a wait/sleep function. Use 100% CPU while you have work to do, but 0% otherwise.

This topic is closed to new replies.

Advertisement