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
|