on my mac it takes 1.45sec to go from 200k to 200 and 0.3sec to go from 200k to 1k:
from vedo import *
import numpy as np
import time
pts = Points(np.random.rand(200000, 3), r=8)
t0 = time.time()
pts.clean(0.05)
t1 = time.time()
print(pts.NPoints(), t1-t0)
show(pts, axes=1)
maybe you can random-select a subset and then “clean” that one, not sure if that helps…