How PAPS operates fast large-scale bulk tasking.
As many our users already know well, one of the core parts of PAPS is the universal batch tasking itself. “the universal” means, in fact, PAPS is not only a bulk photo editing app, internally we’ve implemented some large tasking structure for dynamically processing all kind of task in parallel.
Above picture can explain how we process multiple photo items fast.
It’s very similar to the most web application’s load balancing principle. When total memory consumption is high, Load Balancer calculates and assigns each task to a pipeline which has minimum/low weighted tasks.
Maximum 4 task pipelines are activated with current situations or conditions of the resource such as memory usage or device’s processing power. Also, it can force the maximum number of processing unit depends on its complexity or load.
Moreover, in practical development point of view, all tools in PAPS has mainly consisted of a bunch of “Task Cloud” which means the code base for sharing to perform each individual task, for example, “convert video into a GIF”, some of them can share each other if they are required in same for each purpose.
A real-world comparison
So we actually can compare that total processing speed (1x) for each case via our “Rotation” tool which has simple and linear processing cost.
The left video demonstrates a case configured to the number of the pipeline to 1, right is 4. A tested device was iPhone X. The total duration was about 20sec Vs. 8sec.
A case of 4-pipeline is about 2.5x faster than a single pipeline. Yes, as we expected naturally, it was not 4x.
Yes, It’s winning. But PAPS restrictively allows the number of maximum pipelines, so especially users who have an old device with low-performance CPUs. Even it might be the single. By the way, we’ve tested for 2K+ photos, but theoretically, it has no limitation, and many efforts have invested(also will invest) it for more fast, complex, and large-scale media processing.