Very inefficient region finding.
salzig opened this issue · 1 comments
my world contains the following region files
r.0.0.mca
r.0.-1.mca
r.0.1.mca
r.0.-2.mca
r.0.2.mca
r.0.-3.mca
r.0.3.mca
r.0.-4.mca
r.0.-5.mca
r.0.-6.mca
r.0.-7.mca
r.0.-8.mca
r.0.-9.mca
r.-1.0.mca
r.1.0.mca
r.-1.-1.mca
r.-1.1.mca
r.1.-1.mca
r.1.1.mca
r.-1.-2.mca
r.-1.2.mca
r.1.-2.mca
r.1.2.mca
r.-1.-3.mca
r.-1.3.mca
r.1.-3.mca
r.-1.-4.mca
r.1.-4.mca
r.-1.-5.mca
r.1.-5.mca
r.-1.-6.mca
r.-1.-7.mca
r.-1.-8.mca
r.-1.-9.mca
r.-2.0.mca
r.2.0.mca
r.-2.-1.mca
r.-2.1.mca
r.2.-1.mca
r.2.1.mca
r.-2.-2.mca
r.-2.2.mca
r.2.-2.mca
r.2.2.mca
r.23640.-16106.mca
r.-2.-3.mca
r.-2.3.mca
r.2.-3.mca
r.-2.-4.mca
r.2.-4.mca
r.25273.33690.mca
r.-2.-5.mca
r.-2.-6.mca
r.-2.-7.mca
r.-2.-8.mca
r.-2.-9.mca
r.-3.0.mca
r.3.0.mca
r.-3.-1.mca
r.3.-1.mca
r.3.1.mca
r.-3.-2.mca
r.3.2.mca
r.-3.-3.mca
r.-3.-4.mca
r.-3.-5.mca
r.-3.-6.mca
r.-3.-7.mca
r.-3.-8.mca
r.-3.-9.mca
r.-4.0.mca
r.-4.-1.mca
r.-4.-2.mca
r.-4.-3.mca
r.-4.-4.mca
r.-4.-5.mca
r.-4.-6.mca
r.-4.-7.mca
r.-4.-8.mca
r.-5.0.mca
r.-5.-1.mca
r.-5.-2.mca
r.-5.-3.mca
r.-5.-4.mca
r.-5.-5.mca
r.-5.-6.mca
r.-5.-7.mca
r.-5.-8.mca
r.-6.0.mca
r.-6.-1.mca
r.-6.-2.mca
r.-6.-3.mca
r.-6.-4.mca
r.-6.-5.mca
r.-6.-6.mca
r.-6.-7.mca
r.-7.0.mca
r.-7.-1.mca
r.-7.-2.mca
r.-7.-3.mca
r.-7.-4.mca
r.-7.-5.mca
r.-7.-6.mca
r.-8.0.mca
r.-8.-1.mca
r.-8.-2.mca
r.-8.-3.mca
r.-8.-4.mca
r.-8.-5.mca
r.-8.-6.mca
r.-9.0.mca
r.-9.-1.mca
r.-9.-2.mca
r.-9.-3.mca
and as you can see there is r.25273.33690.mca
and r.23640.-16106.mca
which sadly push the boundingBox for the world quite far outward.
Now... after wondering why MinedMap didn't complete, or at least wrote a message about new tile rendered, i started to dig around what is happening and ended up using strace
to see what the process ist doing..
…
stat("/data/Brave/region/r.2713.12406.mca", 0x7ffe6b57a170) = -1 ENOENT (No such file or directory)
stat("/data/Brave/region/r.2713.12407.mca", 0x7ffe6b57a170) = -1 ENOENT (No such file or directory)
stat("/data/Brave/region/r.2713.12408.mca", 0x7ffe6b57a170) = -1 ENOENT (No such file or directory)
stat("/data/Brave/region/r.2713.12409.mca", 0x7ffe6b57a170) = -1 ENOENT (No such file or directory)
stat("/data/Brave/region/r.2713.12410.mca", 0x7ffe6b57a170) = -1 ENOENT (No such file or directory)
stat("/data/Brave/region/r.2713.12411.mca", 0x7ffe6b57a170) = -1 ENOENT (No such file or directory)
…
After seeing this, i took a look into https://github.com/NeoRaider/MinedMap/blob/master/src/MinedMap.cpp#L360 i realized how minedmap iterates.
Wouldn't it be better to just iterate over all the region files available, instead of guessing regions files by iterating over each coordinate in the map bounding box?
Yes, this makes sense. The info.json
format will need to be adjusted as well to avoid creating an enormous array containing false
for each missing region.
I should be able to have a look at this soon.