savina
savina copied to clipboard
AStar/GuidedSearch benchmark issues.
The allNodes
field is for some reason a HashMap. However, it seems to be densely populated so, I would kind of assume it should be an array. Any specific reason why it is a HashMap?
The busyWait
function uses Math.random() and thus, sequentializes all workers on the AtomicLong
seed
of the shared Random object.
Implementing this benchmark faithfully with a language that guarantees isolation between actors is also hard. I am not sure how to do it. Especially not preserving the parallelism.
At each step, the GridNodes are read and mutated. Interestingly, mutation is probably idempotent, but, an actor needs to know whether it succeeded to know whether it should continue working on the neighbor, or to check whether it is done.
I have no good idea how to realize this in a pure event-loop language without sequentializing all operations. There needs to be either a strategy of distributing the grid nodes between multiple actors, or a mechanism that allows for instance idempotent racy mutation. Either way, this seems like a huge change to the benchmark.