Minetest logo

IRC log for #minetest-dev, 2024-05-16

| Channels | #minetest-dev index | Today | | Google Search | Plaintext

All times shown according to UTC.

Time Nick Message
00:41 ShadowBot joined #minetest-dev
04:00 MTDiscord joined #minetest-dev
04:55 YuGiOhJCJ joined #minetest-dev
05:34 vampirefrog joined #minetest-dev
06:13 Noisytoot joined #minetest-dev
07:08 sfan5 are you sure simply looking up a value in the map is a bottleneck?
07:09 sfan5 obviously something has to come out on top when you profile but if everything is fast enough then there's nothing more to do
07:33 vampirefrog joined #minetest-dev
07:45 d0p1 joined #minetest-dev
10:57 MTDiscord <exe_virus> Actually yes, looking up object pointers in modifySafeMap becomes a bottleneck at 5000 entities after fixing the spatial index piece.   And no, std::map is notorious for being slow, there are drop in replacements that can be 3-5 times faster, which is enough to matter once we fix lookups by position
11:06 sfan5 a bottleneck in what exactly?
11:10 sfan5 maybe my intent is clearer when I ask: after replacing the map implementation something else will be the bottleneck? will you optimize that too? or when is it enough?
11:13 sfan5 the reason I am questioning this is 1) importing some new dependency is best avoided 2) my gut feeling says the source of lag is the O(n) spatial lookup, not the container implementation
11:18 sfan5 (to be clear you could use the same argument to say that spending time on ModifySafeMap was misguided and it would be correct)
11:32 MTDiscord <exe_virus> understood, this was what we were seeing with Lars' imlpementation, we didn't get to profile mine
11:32 MTDiscord <exe_virus> second: yes it was a significant enough percentage of execution to warrant optimization
11:33 MTDiscord <exe_virus> thrid: us implementing something from scratch is identical to brining in one of the header-only specialized maps
11:33 MTDiscord <exe_virus> It was about 35% of execution time for the get() function on modifySafeMap alone after fixing getObjectsInArea and getObjectsInRadius.
11:34 MTDiscord <exe_virus> After things start to drop to 10-15% equal across 6 different hot paths, then I stop optimizing. But as long as things are 30+% of execution time, that warrants optimization in my eyes
11:41 imi joined #minetest-dev
11:41 sfan5 what's the test case? "the 100%"
11:41 MTDiscord <exe_virus> Oh, it was just a yourlands test server with about 5000 entities all trying to move, collide, etc.
11:42 MTDiscord <exe_virus> After whacking the SpatialIndex problem, the next whack a mole was modifySafeMap get, which makes sense, because I can imagine hitting that like 2-3 times per entity, so we could get 10-15 thousand std::map lookups
11:44 sfan5 that makes sense
11:44 sfan5 how was the max_lag during that?
12:02 MTDiscord <exe_virus> 5 seconds
12:03 MTDiscord <exe_virus> If we can support 5000 entities with 20 server ticks per second (STPS), then I would be done with optimizing for a while. That's enough for 50 players all to have 100 entities haha
12:04 sfan5 sounds worth optimizing then
12:04 sfan5 btw I wasn't suggesting writing our own optimized map, that would be stupid
12:05 MTDiscord <mistere_123> fyi there are now commercial users of minetest who want to have 100 concurrent users. Not that the Minetest team needs to cater to them especially, but a use for optimization exists
12:05 MTDiscord <mistere_123> well, 100+
12:07 MTDiscord <exe_virus> That's, not that many entities?
12:10 MTDiscord <mistere_123> users, not entities
12:20 MTDiscord <exe_virus> right, but that many users = only 100 entities, what are they doing with minetest? node stuff? entity stuff? particles?
12:21 MTDiscord <exe_virus> Also, don't we already support 100+ connected users?
12:30 MTDiscord <exe_virus> On a different subject: why do we still have the BS macro/variable everywhere, is it still performing a purpose?
12:35 Desour joined #minetest-dev
13:56 sfan5 the purpose of it has not changed, it depends on whether you consider it useful
14:02 srifqi joined #minetest-dev
14:04 srifqi hello. is merging this directly to master fine? (pinging sfan5 as the author of the commit causing the issue)
14:04 srifqi https://gist.github.com/srifqi/f00717f4bb61e28e4247aadca2edfbc0
14:05 sfan5 of course
14:07 srifqi okay, will do soon-ish
14:14 srifqi done
14:25 fluxionary joined #minetest-dev
15:36 MTDiscord <exe_virus> I guess rather than use it to keep people from blindly converting floats to ints, and thereby introducing a bunch of multiplication everywhere, we just wrap position into a class, so static casting to an int isn't allowed, without an explicit member function. And that can be fully performant, without underlying additional operations introduced
15:37 rubenwardy joined #minetest-dev
16:49 Sharpman joined #minetest-dev
17:09 grorp joined #minetest-dev
17:13 grorp sfan5: could you update the sdl2 version used by the mingw CI? 2.30 contains a Windows fix that's relevant for my touchscreen stuff (https://github.com/libsdl-org/SDL/pull/8750 / https://github.com/libsdl-org/SDL/commit/bbe4d693eb0642c8011d1936d40185e4b5669eb7)
19:00 MTDiscord1 joined #minetest-dev
19:16 fgaz_ joined #minetest-dev
19:17 bigfoot547 joined #minetest-dev
19:17 Eragon joined #minetest-dev
19:18 vampirefrog joined #minetest-dev
19:19 sofar joined #minetest-dev
19:19 TheCoffeMaker joined #minetest-dev
19:25 pmp-p joined #minetest-dev
19:30 nore joined #minetest-dev
20:08 sfan5 sure
22:32 panwolfram joined #minetest-dev

| Channels | #minetest-dev index | Today | | Google Search | Plaintext