00:27 agentzh joined 00:41 pyrimidine joined
timotimo rakudo is currently bad at inlining operators involving native types, MasterDuke 00:45
maybe that's what you're seeing; can you try with non-natives instead?
MasterDuke oh weird, not specifying any types was faster 01:20
and had 1m fewer call frames
was 100% speshed vs 50 % speshed, 50% jitted for natives 01:21
timotimo fewer call frames would support my hypothesis that it's about natives preventing inlining of operators 01:22
how much faster? and what's the comparison between nqp and rakudo-without-natives? 01:23
MasterDuke nqp was 1607ms, rakudo w/ native was 3007ms, rakudo w/ no types was 2815ms 01:24
timotimo still a bad performance hit
did you use := in perl6 after you threw out the types? 01:25
MasterDuke rerunning the non-type with $l := nqp::readlinefs() was 2720ms 01:26
only ran them all once, so there could be some noise i'm not averaging out 01:27
afk for a bit
timotimo right 01:29
MasterDuke make the rakudo version into this; 'use nqp; sub a() { nqp::stmts((my $f := nqp::open("small_compile.sql", "r")), (my $l), (my $s = 0), nqp::while(($l := nqp::readlinefh($f)), ++$s), $s) }; say(a())' 02:10
just made the sub body a nqp::stmts(). that dropped it to 2170ms 02:11
02:12 pyrimidine joined
MasterDuke timotimo: is it a rakudo, nqp, or moarvm problem that natives prevent inlining? 02:13
timotimo rakudo 02:16
and to a lesser extent moar
MasterDuke fwiw, the naive perl6 version: 'sub a() { my $s = 0; ++$s for "small_compile.sql".IO.lines; $s }; say(a())', was 100% jitted and took 4700ms 02:17
interestingly, a perf record/report of all version shows the same top two symbols (MVM_string_utf8_decodestream and find_separator.isra.6) 02:26
and they are the highest percentages by far, though the percent for each drops as the total runtime increases 02:27
which makes sense in a way. there is a certain fixed amount of time needed to read the file, and the higher level versions of my benchmark just add more and more overhead 02:28
though i think the time to read the file could/should be improved 02:30
02:38 agentzh joined 02:48 ilbot3 joined 05:25 pyrimidi_ joined 06:37 pyrimidine joined 07:11 brrt joined 07:22 domidumont joined 07:27 domidumont joined 07:35 domidumont joined 08:00 pyrimidine joined 08:30 brrt joined, TimToady joined
brrt .tell nine, no, we don't use that information currrently 08:33
yoleaux2 brrt: What kind of a name is "nine,"?!
27 Jan 2017 17:29Z <nine> brrt: so as we're talking about a JIT, do you actually have some information about runtime behavior accessible in the register allocator? I.e. does it have an idea how often loops may run?
brrt tell nine no we don't use that information currently
08:33 domidumont1 joined 08:36 zakharyas joined
nine brrt: a shame :) 08:37
brrt agreed
however, there's a reasonable reason for tht 08:38
which is that the expression JIT doesn't extend that far just yet
the expression JIT only works for basic blocks now
nine fair enough :) 08:39
brrt handling all the issues (especially surrounding throwing/catching) was considered too complicated
however
i'm intent on implementing a stack-walking functionality that can find the current entrypoint from the JIT bytecode 08:40
from that, we can easily find the labels to which that entrypoint belongs
and from that, we know exactly 'where we are' when throwing/catching
this should save us a store operation for every basic block, quite a saving 08:41
nine sounds good :) 08:42
brrt yeah. the cost is that we have to compile moarvm with frame pointers kept arround
that is a pesssimization
otherwise stack walking is not possible 08:43
the second bit is, we'd ultimately want to implement tracing for spesh 08:45
09:02 pyrimidine joined 09:23 pyrimidine joined 09:44 brrt joined
jnthn o/ #moarvm 10:16
brrt \o jnthn 10:17
10:26 pyrimidine joined 10:28 domidumont joined 11:45 brrt joined 12:35 brrt joined 14:33 hoelzro joined 14:43 avar joined 14:53 KDr2 joined 15:42 pyrimidine joined 16:05 brrt joined 16:16 pyrimidine joined 16:25 pyrimidine joined 16:44 agentzh joined 17:42 pyrimidine joined 17:45 zakharyas joined 17:48 FROGGS joined 17:52 pyrimidine joined 18:05 pyrimidine joined 18:15 nebuchadnezzar joined 18:26 agentzh joined 18:37 domidumont joined 19:31 agentzh joined 20:09 pyrimidine joined 20:15 pyrimidine joined 20:56 pyrimidine joined
samcv morning 21:10
lizmat samcv o/ 21:11
samcv: could you give a small description of what 3a774066d585062c52191e10 is about for the user ? 21:12
for the P6W :-)
samcv k 21:15
Samantha McVey has added the last of the Unicode named sequences[1], which are in addition to the Emoji sequences that had been added earlier. 21:20
Getting codepoints or sequences by name is also now case-insensitive, "\c[solidus]" / "\c[Grinning Face]" 😀.
A docs article has been added about using Unicode sequences [2]
[1] www.unicode.org/Public/UCD/latest/u...uences.txt
[2] docs.perl6.org/language/unicode
jnthn o/ samcv 21:21
samcv: Will look at your PR in the morning; ran out of brane for today
lizmat samcv: thanks! 21:23
samcv :) 21:26
thanks jnthn
this atom plugin is so nice, having all my subs and classes on the left bar to access 21:27
way easier to get around a 700 line file when all the subs are in a list in my editor i can click on and go to 21:28
21:45 agentzh joined 22:41 pyrimidine joined 23:47 pyrimidine joined