Advice for Speeding Program Execution when dealing with Point Clouds in Grasshopper

I am writing a code that involves me reading a point cloud - from a text file, converting it into Grasshopper Point3D objects, and then doing some simple algebra operations on the point cloud to create an output point cloud. This would be done on a cloned dataset.

I am expecting issues when the point numbers run into large numbers like 1,00,000 and above.
The algorithm involves me taking 3 passes over the data. All of this happens in a C# script component.

Are there any generic tips for creating a “program is running” kind of interface? If the user knows the program is running - smoothly, he can leave it overnight too to finish the operation. What are some good tricks to achieve this?

Other tips to generally speed up program execution are welcome too.