Single Threaded vs Multithreaded: Applications & Tasks Performance
In this post we’ll list the most common multi-threaded and single-threaded tasks from all types of computer programs.
We will answer the question: “is X a multi-threaded or a single-threaded task?”
Ex: Is exporting , rendering , editing photos and gaming multi-threaded or single-threaded?
Single-threaded tasks will mostly use ONE THREAD (one logical core) whereas multi-threaded tasks will use several if not ALL THREADS.
Note: by thread we mean a logical core. Thread has a different meaning in programming but here it means a logical core ( one physical core = two threads. For the basics check beginner’s guide to computer specs).
Methods: Task Manager & Third party CPU benchmarks
It’s not difficult to find out applications that use multiple threads. All you have to do is the following:
- Make sure to close ALL other applications save for the one you are testing
- Make sure the CPU activity is very low.
- Open your program/game or run a specific task (rendering, rotating a model in 3D, gaming, etc)
- Wait a while (loading the software spikes CPU activity).
- Perform a specific task or effect (rendering, compiling, gaming, etc).
- Then press CTRL+ALT+DEL as shown below:
List of Multi-Threaded Tasks
You can call a task multi-threaded when you see LOTS of activity in several boxes.
3D CAD Software
Rendering
Rendering regardless of 3D Software is always going to be a multi-threaded task. This is not a parametric process (in other words, there’s no need to wait for one step to be completed before jumping into the next step) since pixels can be rendered independently from each other.
Since the software can start “rendering” an image from various points simultaneously. Thus the more cores you have the more points it will be render and the faster the rendering.
For a software like AutoCAD rendering doesn’t take that long (1-3 min) since the shaders and textures used are not graphically demanding and/or detail.
However, for software like Revit & Solidworks, rendering may take 15+ min depending on the textures/shaders used and the amount of details/#parts on the model.
Animation
Even when the software is in iddle mode, that is, the project is open with a 3D object in place. There’s a high-usage for both CPU & GPU as shown below:
Editing & Effects
Most of the editing & texturing process requires not only calculations but also LOTS of RENDERING frames and details. This is why unlike CAD software, Animation software will tend to be MULTI-THREADED even when editing and modeling.
3D Viewport
Viewport in animation software requires lots of rendering and depending on the view mode you choose, it can take every single thread utilization from every single core.
Rendering
Rendering is even more exhausting in Animation software as well. The CPU is not using every single thread at 100% but rendering , depending on the size and textures, can take hours.
Video Editing
Playback & Previews
Due to the amount of details behind high resolution playback, the processes is inherently multi-threaded.
Although there may not be a need to write the software to multi-thread playback with low resolution clips. Very high resolution (4k,8k) have a lot more data to processes in a short amount of time, thus it is IDEAL to make the process multithreaded.
Exporting & Encoding
Exporting, Encoding, Transcoding are all multithreaded. These tasks are taking data and turning into a different set of data: be it with new effects, new format, etc.
Either way, since changing information into a different format is not dependent on previous results, the proces can start anywhere or be done in parallel kind of like flipping a stack of papers: it can be done all in parallel.
Thus is it very multi-threaded, the more threads, the faster the job will be.
Photo Editing
LightRoom & Other software
As you’ll see later. Most photo editing & imaging software like Photoshop, InDesign & Illustrator is heavily dependent on single-thread clock speed for FAST performance.
However, other software MAY not be single-threaded when it comes to editing. For example, “Photo viewer” which is the by-default application used in Windows when you click on a photo has lots of functions that are HEAVILY multi-threaded.
I’m using the generative Erase tool to get rid of wrinkles. The tool uses a high percentage of all the other threads.
The same thing happens with Lightroom. Most of the functions applied to one single photo are moderately multi-threaded as shown below:
Batch Editing
Thus if you constantly edit photos in masse and would like to save time, you want to focus PURELY on number of cores as opposed to clock speed performance.
Exporting
You would expect exporting to be multithreaded and indeed it is as you can see in the graph above. However, most of the workload which is sequantial is carried out by one thread. Painting/rendering colors and shapes are multi-threaded hence the activity in the remaining threads. The activity is low on the additional threads so you might as well focus on a very high clock speed CPU.
Music Production
PlayBack
It makes sense for playback to be multithreaded. Each track is assigned to one thread (as shown in the figure).
There are a total of 7 tracks and , depending on how complex the sound is, they take a small percentage of the resources of one thread as shown in the lower part of the figure.
Other tasks
For music production multifile importing and exporting are all multi-threaded. Luckily, the clock speed performance and multi-core performance required for fast performance with the software is very very low. Thus most CPUs should do the job pretty quickly.
Programming
Parallel Processing
Parallel Processing refers to processing chunks of information “in parallel” for a final result which in programming means compiling different sections of the code separately for a final result. This is the reason for the activity being more or less distributed among all threads (logical cores) in the figure. The simulation core engine I used has functions that can be done in parallel.
This can be these pieces of code/data are independent of each other.
The following areas can be done “in parallel” :
- Machine Learning
- Artificial Intelligence
- Deep Learning
- Image Processing (anything related to images)
App Emulation
I’m emulating a small tablet applications on the figure. Notice how very very multi-threaded app emulation is. Just having the emulator open without even launching any application takes up MOST of the CPU resources in MOST logical cores.
Now…
Imagine having the emulator open while at the same time compiling (which is as we described before is single-threaded) and working on your code. This will BOTTLENECK most high-tier modern CPUs. Though most of the cores will have at least 50% of resources available, since compiling and writing code is MOSTLY single-threaded, it will NOT be able to use the other threads and the result is a HUGE bottleneck from the lack of ST performance.
Virtualization
You don’t need a multi-core CPU to run several virtual machines at once but you DO need multiple cores/threads to optimally run each virtual machine simultaneously.
A rule of thumb for having a decent performance on a virtual machine is 2 VMs/Thread.
If you have a 12 thread CPU as shown in the figure, then you should be able to run 22 VMs (-2 threads for the host) optimally.
On the other hand, if you’re running just ONE virtual machine. You only need ONE thread.
Game Emulation
Each thread handles a different instances of the game. For example, one thread may handle audio, the other rendering imageas, the other interactions and lastly the main thread may handle user input.
Although this is a multithreaded task, it isn’t CPU demanding. Most CPUs regardless of their clock speed or number of cores will easily handle emulation UNLESS you start emulating recent games from recent consoles for which single-thread performance becomes crucial.
List of Single Threaded Tasks
3D CAD Design
Viewport / Orbit Tool
3D viewport (also known as orbit tool) is rendering an image in real time in 3D . Calculations are not sequential so multiple threads can be used to render the next frame or adjacent frames. HOWEVER, most of the workload is carried out by one thread.
The activity on the main thread #3 (logical core) is low (though much higher than all other threads) because the model is only showing polygons. The moment different textures, shaders and other display modes are used, the single-thread dependence will be more obvious.
Drawing
Functions & Tools for Drawing/Designing/Modeling will most of the time (with some exceptions) be single-threaded. Note that the CPU activity in the figure is centered around the third box.
Rendering the figure as you edit may be the reason for the activity in the remaining threads.
Either way, if you want to maximize performance when drawing you want to focus on the higher clock speed CPU. Fast drawing/manipulation of larger models will require even more clock speed.
Video Editing
Effects & Editing
Applying Effects, making transitions & cuts are mostly limited to ONE or TWO threads. The process itself is multi-threaded if we count the activity in all the boxes. However, most of the workload is handed over to one or two threads. Thus we can say the process is more or less single-threaded.
In the clip above, I added distortion & change the hue.
Photo Editing
Applying Effects & Editing
If we are talking about photo editing tools like the brush tool, selector tool, blur tool, lasso tool and most of the tools seen on the left side of the figure above, it is mostly carried out by ONE single thread.
On the right you can see ONE thread being mostly used as I apply the brush tool to eliminate the red spots on the figure.
Music Production
Effects
If you add effects to one track at a time, the process will be single-threaded. In the figure above I added the reverb effect on all 7 tracks and most of the workload is carried out by TWO threads (red squares).
There’s activity in the remaining threads as well to apply the effects on all the other tracks
I assume the first two threads are working on the LONGER track while the remaining threads work on the smaller/shorter tracks.
Importing
If you import one track at a time, the process will be single-threaded as shown in the figure. Most of the workload is carried out by ONE single-thread while the remaining threads, which have a much smaller activity, probably work on background processes related to importing a file.
Programming
Coding & Compiling
For the most part this is going to be a single-threaded task. Most of the codes people run for simple scripts and applications runs on a single thread. The moment the final product gets more complex and you need to make use of several files simultaneously and where compiling each chunk of code takes quiet a lot of time then the code is most likely to be multi-threaded.
Gaming
This is a complex topic. In summary, all games are multi-threaded.
Some games due to the high amount of graphics processing use all other threads to coordinate the rendering process with the GPU. Games with lower graphical details do not need to use other threads as much.
Online Multiplayer Games
ONE thread (logical core) that handles both draw calls (rendering images) and syncing the actions from the user and its effect on the server/game.
Since by default, the process is parametric and must be synchronous with the server , it is much much harder to make use of the remaining threads (logical cores).
The remaining threads work on the image rendering process.
Now…
How much a game makes use of all other threads for the rendering process depends on the game.
In this specific example, most of the workload it’s done by the MAIN thread, the remaining threads don’t even use half their resources.
Most games behave in a similar manner but they might use a lot more resources in every thread (up to 70% or so).
Thus regardless of the game your focus should be the single-thread speed as it is likely to be the most limiting factor for both rendering images and the syncing process with the server.
Veredict: Focus on ST or MT Performance?
Use this section to decide whether to go for multi-thread performance or single-thread performance. If you decide to buy a CPU or a laptop with a particular CPU, you can use the benchmarks I’ve outlined in the following posts:
- Intel Laptop vs Desktop CPU comparison
- AMD Laptop vs Desktop CPU Comparison
- AMD vs Intel CPU Single-Thread Comparison
Usually, if you want multi-thread performance, you’d want to go with AMD (given the same costs). If you want the highest single clock speed performance, you’d want intel.
3D CAD Software
Most CAD software including Solidworks & CREO are also mostly single-threaded when modeling/editing. This is because the functions used when modeling are parametric: they must be done step by step and cannot be processed in parallel (because the functions must wait for a result before jumping onto the next step).
A) Now….if you work with models that have a relatively low # of parts/polygons (<1000) , then MOST modern CPUs (even those found on budget laptops or the most budget CPUs for desktops) will have ALL the clock speed you need for a fast workflow. Thus it makes sense to focus on multi-core performance for faster renderings and multitasking.
B) If you work with models in the 10 000s of parts, then single-thread performance is CRITICAL for fast performance. In this scenario, you want to focus as MUCH as possible on buying the CPU with the highest clock speed you can afford. Also in this scenario, it is very unlikely you’ll render on the same machine due to time and hardware constraints.
C) If you render , run simulations or do FEA Analysis FREQUENTLY, then you want to focus on multithread performance and less (depending on how big your models are) on single-thread performance.
3D Animation & 3D Game Development
If you check the benchmarks above, you’ll notice nearly ALL the tasks in the animation proces: modeling, texturing, animating, viewport make FULL use of every thread in a CPU. Resources are nearly exhausted in every instance and this is because although the functions are parametric and by nature single-threaded, the textures & shaders that are CONSTANTLY rendered as you model and use viewport are multi-threaded.
Here’s the deal:
Based on my benchmarks, although all CPUs are exhausted whether you have 6-8 cores (12-16 threads) it seems that performance when modeling is all the same. Thus…
If you want to improve your workflow, you want to focus on single-thread performance and THEN consider number of threads mostly to improve viewport & rendering performance.
It is likely, you will use a render farm if your models are in the category of studio level projects. Thus it makes even more sense to focus on single-thread performance ESPECIALLY if you max out on a dedicated graphics FIRST (since this is where most of the viewport performance will be processed).
Video Editing
Music Production
Music Production isn’t hardware demanding at all. Most functions are multi-threaded but they don’t take up much CPU resources (you can see above the graphs almost never go to 100%). Most tasks only use up 15-20% of the total power of each thread.
If anything, you may want to focus on single-thread performance. Since exporting/importing will be lightining fast more clock speed will slightly speed up the editing process.
Photo-Editing
Most of the photo editing process consists of well editing: applying effects, drawing, changing hue. colors, saturation, lightining, cropping, etc. These are all single-threaded applications in MOST photo editing software especially the Adobe Creative Suite.
However, Lightroom and several other photo editing software that FOCUS on applying changes on a collection of photos simultaneously are heavily multi-threaded. It’s not just the process of applying effects to a collection of photos but also a single photo (in the case of photo editing software outside the creative cloud).
Programming
Most SIMPLE scripts are single-threaded due to the simplicity of most codes because they don’t require much CPU power to compile.
However, all projects ESPECIALLY software development can be made very multi-threaded. For example, if you separate several sections of your code into separate files. Each file can be compiled by one thread and this is what happens in most software projects especially those that are HARDWARE demanding.
Not only that…
In the age of data science and image processing, where most processes are EXTREMELY multi threaded to the point of having to use extra cores out of GPUs , multi-thread performance becomes KING.
Gaming
File/Format Conversion
Web Browsing
It can be very multi-threaded depending on the website.
For example, gaming websites and websites you have to interact with software or websites that have interactive multimedia functions might be multi-threaded.
However, thread-usage isn’t dramatic. Thus web browsing wil be fast with most CPUs…. besides from ARM & mobile chips which will be VERY slow even for single-threaded web browsing apps.
A much bigger bottleneck is internet connection since there’s lots of data packets being exchanged before a website/page needs is rendered.
Comments?
If you have any questions suggestions or would like me to feature your own benchmark for a given software or game, let me know in the comments below.
Author Profile
- I am physicist and electrical engineer. My knowledge in computer software and hardware stems for my years spent doing research in optics and photonics devices and running simulations through various programming languages. My goal was to work for the quantum computing research team at IBM but Im now working with Astrophysical Simulations through Python. Most of the science related posts are written by me, the rest have different authors but I edited the final versions to fit the site's format.
Latest entries
- LaptopsNovember 30, 20243060RTX Laptop GPU vs 4060RTX Laptop GPU
- LaptopsNovember 28, 20244080RTX Laptop GPU vs 3080Ti RTX Laptop GPU
- LaptopsNovember 28, 20244070rtx Laptop GPU vs 3070Ti Laptop GPU
- GPUNovember 27, 20244070RTX Laptop GPU vs 3080RTX Laptop GPU