Welcome to one of my NonTech Posts. This type of post is targeting a non-developer audience and tries to explain specific Topics on a high-flier level.
Before we explore what makes an application unbearably slow, we should clarify what an application is.
An application is developed by humans (for now at least) to solve a defined problem. For example the Google Search engine: If you want to search for stuff on the Internet, it enables you to do it.
Every big company has it‘s own custom problems, with it‘s own gazillion programs which solve these problems (report this, print that etc.). You me be familiar with some of these little fellows, one of them probably brought you here.
Your application runs on a physical existing computer (yes, cloud included), this computer runs on electricity and has a certain spec or configuration.
Like the way a car has a almost distinct configuration (form, color, engine), a computer also has one.
We want to focus at the resources a computer provides an application:
- CPU – Central processing Unit
This is the main engine, it provides your application with the possibility to compute things. The goal is to feed this with as much information as you can and always keeping it busy.
- RAM – Random-Access Memory
If your application consists of more than adding two numbers, it needs memory to store its internal data. The goal is to use only as much as you need, it is a finite resource. Furthermore you want to access it in a fast manner, so that you do not keep the CPU waiting.
- Network Connection
Used for useful things like for example an Internet access. It is a good idea to reduce the time spent here.
- Access to a Storage Device
This can range from a simple hard drive to a very expensive SSD or another external storage device. The point is that the information does not disappear when you turn the lights off. It is a good idea to reduce the time spent here.
In essence the idea is to keep the CPU busy at all times and reducing the time spent working with other resources.
By using those resources in a smart way, an application can get away with transferring and computing a lot of data in a very short time frame – it runs blazingly fast.
But if an application does not do that, the runtime is sometimes hair-raising.
If you remember nothing else from these posts, just remember this:
An application, which uses the hardware poorly, will never be fast.