# [[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 .