Maybe you should consider using multithread anyway.
A linear c# non-multithread script with the Surface.ShortPath calls do the work exactly like native Geodesic block.
As expected, the multithreaded version takes about 12% of the time to finish the same task, in my system.
Ryzen 1800X , 8-core 16-thread; 100/8=12.5 … i’d say it is scaling pretty good.
To make the script work fast, multithreaded, it loads the parameters as lists.
Grafting will probably work differently now, in terms of speed, time and results
Maybe you’ll want to use Cross Reference block before or to edit the code inside the script.
Also, the script consider P0 and P1 lists having the same length. If you graft, you’ll need to use longest list before, as here:
Hope it helps!
If you are on an octa-core you’ll maybe pass from 36m to 5ish minutes …
Let me know, I’m curious now!