Achieving high performance
One of the ways to improve application performance is to run code concurrently. This not only allows us to run code faster and get the results more quickly, but it also frees the main-thread from doing a lot of work and being blocked. You should know that the main thread is responsible for events and user input handling. All the UI work is performed on the main thread and to achieve a really smooth user interaction we should do as little work as possible on the main thread.
Running code concurrently can be a tricky task and sometimes it can lead to increased running time for an operation. Making solid concurrent application architecture is also not a trivial task and you should plan it carefully.
To take full advantage of concurrency, it is very useful to understand the hardware we have at our disposal that allows us to do that.
Device architecture
In order to be able to achieve really high-performance, first we need to learn and understand what kinds of tools we have...