Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes.
Set by lizmat on 24 May 2021.
00:00 reportable6 left, reportable6 joined 04:03 unicodable6 left, squashable6 left, linkable6 left, shareable6 left, releasable6 left, bloatable6 left, evalable6 left, tellable6 left, quotable6 left, statisfiable6 left, benchable6 left, nativecallable6 left, coverable6 left, committable6 left, reportable6 left, greppable6 left, bisectable6 left, notable6 left, sourceable6 left 04:04 benchable6 joined, tellable6 joined, linkable6 joined, greppable6 joined, squashable6 joined, unicodable6 joined 04:05 evalable6 joined, reportable6 joined, releasable6 joined, bloatable6 joined, notable6 joined, coverable6 joined 04:06 sourceable6 joined, quotable6 joined, statisfiable6 joined, committable6 joined, bisectable6 joined, shareable6 joined, nativecallable6 joined 06:00 reportable6 left 06:01 reportable6 joined 07:04 squashable6 left 07:05 squashable6 joined
timo somehow, when parsing the core setting, a tremendous amount of the string "prefix" and the string "infix" are created as new MVMStrings with not-strand-storage, i.e. they are not just substr'd out of something else, or taken from a hash key or something like that 08:52
08:59 sena_kun joined
lizmat string literals ? 09:01
timo it could theoretically be the nqp::lc in EXPR 09:05
string literals should always come out of the comp unit's string heap 09:21
lizmat TIL :-)
timo ok so we definitely do create a bunch of strings because we nqp::lc the $KEY that comes into EXPR 09:24
question is, does it matter 09:25
there is an "unless $KEY { return 0 }" and later we have $KEY // "infix" which seems redundant 09:26
but why are the keys that come in always uppercase, and why don't we switch so we use upper case keys in EXPR itself so when we nqp::uc the strings that come in to make them always fit we just get the same string back usually since uc on an already-uppercase string re-uses the incoming string 09:27
oh, ah, we do use $key as a key into $/'s hashn
we also create a lot of int from Int, and very few num from Num 09:30
(this is all just looking at core.c setting compilation fwiw)
09:33 linkable6 left, linkable6 joined
timo add_numeric_constant does that part 09:33
from World.nqp
lizmat well, that's going to go the way of the dodo 09:34
timo because of rakuast i assume 09:35
lizmat yes 09:37
timo .o( i think stagestats should output the number of gc runs at the end haha ) 09:39
1865 gcs run (but i did not count minor vs major) with my little patch to eliminate lc calls, and 1869 without my patch 09:45
so ... drop in the bucket territory here 09:46
lizmat still, each GC run less is like .05 second wallclock less ? 09:49
*and* less memory usage total, I'd say, so easier to build on memory challenged hardware ? 09:50
I mean, if there's no downsides
or is this a patch in World.nqp ?
timo gist.github.com/timo/42ebfc80ed905...b4584a86c2 only a very small change in World 09:53
the more important change is in Actions 09:54
not sure if the "else" branch ever encounters something that is not Num 09:55
maybe an if or ??!! cascade is faster than a hash here 09:56
lizmat timo: I think you're focusing on the past here 10:04
I couldn't find anything like that in the RakuAST code, so I guess it has been fixed in another way
Voldenet it's not the past if rakuast is only experimental 10:06
lizmat rakuast will not be experimental in 6.e
it's only marked as experimental because it may still change in API 10:07
this is different from experimental :pack and friends
Voldenet I see, it's only tagged as experimental so people don't use it, but it's stable 10:08
lizmat it's stable enough to make 64% of test files pass completely
timo does rakuast have a new EXPR?
lizmat ah, yes it does 10:09
in src/Raku/Actions, line 836
I was only looking in src/Raku/ast :-( 10:12
timo hehe.
without my patch it's 1858 minor, 11 major collections, with it it's 1857 and 11, so it could very well be it was just noise when i thought i made it noticeably better :D 10:15
1856/11 this time, maybe it gets better every time i run it 10:16
yeah but i just found some random tree to bark up for no good reason 10:17
12:00 reportable6 left, reportable6 joined 15:50 greppable6 left, quotable6 left, benchable6 left, reportable6 left, committable6 left, squashable6 left, shareable6 left, bisectable6 left, bloatable6 left, nativecallable6 left, linkable6 left, sourceable6 left, evalable6 left, releasable6 left, tellable6 left, notable6 left, unicodable6 left, statisfiable6 left, coverable6 left, linkable6 joined, tellable6 joined 15:51 nativecallable6 joined, squashable6 joined, releasable6 joined, statisfiable6 joined, sourceable6 joined, committable6 joined, benchable6 joined 15:52 bloatable6 joined, quotable6 joined, coverable6 joined, evalable6 joined 15:53 greppable6 joined, bisectable6 joined, reportable6 joined, unicodable6 joined, notable6 joined, shareable6 joined 16:53 linkable6 left, evalable6 left 16:56 evalable6 joined, linkable6 joined 18:00 reportable6 left 18:02 reportable6 joined 18:46 squashable6 left 18:47 squashable6 joined 21:02 sena_kun left 21:29 coleman_ joined 21:37 sugarbeet left, coleman left, coleman_ is now known as coleman 22:04 sugarbeet joined 23:11 linkable6 left, evalable6 left 23:12 evalable6 joined, linkable6 joined