SpacemanDMM
SpacemanDMM copied to clipboard
Should not sleep Fixes
Fixes #355
Also splits SHOULD_NOT_SLEEP and SHOULD_BE_PURE tests and adds a minor improvement to the test helpers in that it shows more info where it wouldn't when panic
ing
As it stands, this is still too slow and uses way too much memory. More improvements incoming.
Okay @SpaceManiac This is latest on /tg/. The 7228 is the number of procs infected with SHOULD_NOT_SLEEP to begin with. Each print-out represents 10s of work.
7228 procs to anaylze call chains for
serialized objtree in 1.718s
11/7228 procs anaylzed
165/7228 procs anaylzed
449/7228 procs anaylzed
818/7228 procs anaylzed
1273/7228 procs anaylzed
1775/7228 procs anaylzed
2250/7228 procs anaylzed
2792/7228 procs anaylzed
3313/7228 procs anaylzed
3840/7228 procs anaylzed
4339/7228 procs anaylzed
4800/7228 procs anaylzed
5349/7228 procs anaylzed
6045/7228 procs anaylzed
6610/7228 procs anaylzed
7109/7228 procs anaylzed
dreamchecker 181.200s - total 192.546s
At this point the only optimization I can think of is to NEVER revisit procs (currently procs that don't have a sleep somewhere in their calls can get revisited) It would result in a slightly incomplete error set but it might be worth it.
I'm going to go ahead and do that
Back under 5s. It no longer prints out transitive errors but the time save is worth it.
There's a bug where the checking in /New()
is too aggressive (We KNOW the type at that point and shouldn't be checking overrides).
/tg/ circa now dreamchecker 2.882s - total 18.013s
~136 errors
If anyone wants to take over this PR. It's basically done, except you need to get the commented out test from the above commit working