Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2017-01-30

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

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

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary