# [[Parallelism]]
Parallelism is a [[Principles of improving work performance|principle of improving work performance]] that involves processing activities at the same time, or "in parallel". However, there are still different approaches to parallelism that vary on what exactly is being done simultaneously.
## Parallelism approaches
Consider an assignment that consists of three distinct tasks:
![[Parallelism-single.excalidraw.png]]
%%[[Parallelism-single.excalidraw|🖋 Edit in Excalidraw]]%%
This assignment can be processed in a parallel way by adding workers that:
- perform the assignment separately (simultaneous processing), or
- specialize in a task (batching)
### Simultaneous processing
In simultaneous parallel processing, tasks are done at the same time:
![[Parallelism-simultaneous-processing.excalidraw.png]]
%%[[Parallelism-simultaneous-processing.excalidraw|🖋 Edit in Excalidraw]]%%
### [[Batching]]
Batching involves splitting up tasks between multiple instances of the assignment and then overlapping them in such a way as to increase efficiency.
![[Parallelism-batching.excalidraw.png]]
%%[[Parallelism-batching.excalidraw|🖋 Edit in Excalidraw]]%%
## Effect of parallelism
When properly executed, parallelism improves performance, but only as much as there are parallelizable activities that constitute a task. Given an unlimited amount of parallelism, most of the time spent on a task will be spent on non-parallelizable parts of it. [^brilliant] [[Amdahl's law]] states that the theoretical limit of improving performance is dictated by the [[Serial]] activities of a task. [^amdahl]
## Related
- [[Serial]] processing is the opposite of parallel processing.
[^brilliant]: Briliant.org. [[Pierre Hires an Assistant]].
[^amdahl]: Wikipedia. _Amdahl's law_. Retrieved from https://en.wikipedia.org/wiki/Amdahl%27s_law .