Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2016-02-22

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

All times shown according to UTC.

Time Nick Message
01:05 japhb 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
03:14 colomon joined #moarvm
06:24 ggoebel16 joined #moarvm
07:28 ggoebel16 joined #moarvm
07:55 FROGGS joined #moarvm
07:57 domidumont joined #moarvm
08:03 domidumont joined #moarvm
08:24 zakharyas joined #moarvm
08:50 nwc10 Odd. hhvm 3.12 was released 11 days ago: https://github.com/facebook/hhvm/releases but there's nothing on the blog (http://hhvm.com/blog/), and nothing I spot in the repository that updates changelogs or NEWS or similar from one (or two) releases previously
08:52 nwc10 and if Pyston can stick to its "every 4 months" plan then 0.5 should arrive in early March: http://blog.pyston.org/2015/11/03/102/
09:02 vendethiel joined #moarvm
09:23 brrt joined #moarvm
09:29 vendethiel joined #moarvm
09:33 brrt good * #moarvm
09:33 FROGGS o/
09:33 nwc10 good UGT, #moarvm
09:34 brrt it is apparantly release time of the month
09:57 vendethiel joined #moarvm
10:37 timotimo yeah, even for perl6
10:41 vendethiel joined #moarvm
11:14 FROGGS joined #moarvm
11:37 brrt joined #moarvm
11:41 flussence joined #moarvm
11:42 ilmari joined #moarvm
11:42 hoelzro joined #moarvm
12:09 vendethiel joined #moarvm
12:31 vendethiel joined #moarvm
12:52 domidumont joined #moarvm
12:59 vendethiel joined #moarvm
14:19 dalek joined #moarvm
14:38 vendethiel joined #moarvm
14:39 d4l3k_ joined #moarvm
14:43 masak joined #moarvm
14:49 synopsebot6 joined #moarvm
15:21 cognominal joined #moarvm
15:37 vendethiel joined #moarvm
16:06 vendethiel joined #moarvm
16:30 vendethiel joined #moarvm
16:56 vendethiel joined #moarvm
17:26 vendethiel joined #moarvm
17:53 vendethiel joined #moarvm
18:13 timotimo watched that "data-oriented design" talk and nothing from moarvm comes to mind where an approach like that could help our performance :|
18:24 vendethiel joined #moarvm
19:04 domidumont joined #moarvm
20:09 brrt joined #moarvm
20:09 brrt timotimo: what 'data driven design' talk
20:10 brrt not a talk about the radical idea that you should measure before you can design, right
20:10 brrt i mean, that's not what any other form of engineering has been doing since forever
20:10 brrt stronger even; that when you design without measurement, its really just sketching, not design
20:11 brrt anyway, VMs kind of tend to be designed with a lot of exactly that kind measurement being distilled into the general style of doing things
20:19 xiaomiao joined #moarvm
20:20 leedo joined #moarvm
20:20 diakopter joined #moarvm
20:20 konobi joined #moarvm
20:20 jnthn joined #moarvm
20:24 timotimo no, not data-driven
20:25 avar joined #moarvm
20:25 avar joined #moarvm
20:25 avarab joined #moarvm
20:25 avarab joined #moarvm
20:25 timotimo brrt: it's about "data is more important than code"
20:25 avar joined #moarvm
20:25 avar joined #moarvm
20:26 brrt i'm curious
20:30 _longines joined #moarvm
20:33 timotimo it was a keynote at the cppconf 2014
20:49 colomon_ joined #moarvm
20:57 timotimo brrt: would you like to help me figure out the performance of a little script?
20:57 timotimo https://github.com/timo/SDL2_raw-p6/blob/master/examples/white_noise.p6
20:58 timotimo in theory i suppose i could put a check outside if the $pitch is equal to exactly the number of pixels per row times the number of bytes per pixel. which in my machines is true
20:58 timotimo and then i can just have a $cursor that i ++
21:01 timotimo the profile says we spend 52.28% inclusive, 42.75% exclusive time in postcircumfix:<[ ]>
21:01 brrt i can try
21:01 timotimo (the rest is inside ASSIGN-POS - both of those things are perfectly inlined)
21:01 timotimo then comes 95.37% of inclusive, 36% exclusive time inside the outer loop in render()
21:02 timotimo and only 7.1% inside pick
21:02 timotimo i get like 14 FPS with this whole setup
21:03 timotimo oh, my local version has the my $then = now line and the 1 / now - then fps lines thrown out
21:03 timotimo because that added a lot of pressure on the GC ... from DIVIDE_NUMBERS and other things
21:04 brrt i suppose that loop is as slim as it can be
21:04 timotimo instead i have a $frame = $frame + 1 and say $frame at the end
21:05 brrt hmmm
21:06 brrt you spend 50% of your time in []
21:06 brrt does nativecast return a proxy of sorts?
21:07 timotimo no, look at the spesh, it basically turns into just a bindpos
21:07 timotimo shall i upload the spesh for you?
21:07 brrt prolly, yes :-)
21:12 timotimo brrt_whitenoise_data.tar.gz  -  how does that sound %)
21:12 timotimo http://t.h8.lv/brrt_whitenoise_data.tar.gz
21:12 brrt :-)
21:14 timotimo what i find surprising is that perf doesn't show a lot of time spent inside the bindpos function at all
21:15 Ven joined #moarvm
21:21 timotimo ==20217== brk segment overflow in thread #1: can't grow to 0x4a56000
21:21 timotimo ==20217== brk segment overflow in thread #1: can't grow to 0x4a52000
21:21 timotimo ==20217== brk segment overflow in thread #1: can't grow to 0x4a41000
21:22 timotimo running valgrind with cachegrind on that script, i get a screenful of this
21:30 timotimo and why the fucking hell is bn_mul_2d so oft-called?
21:31 timotimo i shall put a breakpoint.
21:34 brrt what is bn_mul_2d
21:34 timotimo sorry, bp_mul_2d
21:34 timotimo comes from libtom
21:35 timotimo that's apparently a bit-shift to the left by a count of bits
21:37 timotimo oh, it comes from set_int
21:37 timotimo MVM_bigint_mp_set_uint64 calls it
21:37 brrt why bigint, where do bigints come from
21:38 brrt i'm sorry, i don't really have the brain left to help you today
21:38 timotimo m: say 4279312947.base(16)
21:38 camelia rakudo-moar 620f4e: OUTPUT«FF112233␤»
21:38 timotimo it comes from the numbers i put into that array
21:39 brrt ah man
21:39 timotimo i think it fits into 32bit though?
21:39 timotimo OH!
21:39 timotimo yeah, i know what it is
21:40 timotimo we're not removing the return value of nqp::bindpos from ASSIGN-POS
21:40 timotimo and it boxes the value into an Int with p6box_i
21:40 brrt aha
21:40 brrt cool
21:40 brrt how did you figure that out
21:44 timotimo i found that out earlier
21:44 timotimo well, it's just that there's still a p6box_i in there
21:45 * brrt afk for today
21:46 timotimo oh, also, it hink the profiler doesn't instrument things that have been inlined perhaps?
21:54 timotimo yeah, the MVM_IS_32BIT_INT macro won't say "yup, it's a small int all right" because it's about signed integers here
21:59 timotimo that also means that the code would still benefit from freeing stuff to be put into a separate thread, because of all the Int objects it's gotta free there
22:01 Ven joined #moarvm
22:02 timotimo aha!
22:03 timotimo m: say "now i gots me { 220 / 10.8 } fps"
22:03 camelia rakudo-moar 620f4e: OUTPUT«now i gots me 20.370370 fps␤»
22:03 timotimo m: say "now i gots me { 511 / 13.28 } fps"
22:03 camelia rakudo-moar 620f4e: OUTPUT«now i gots me 38.478916 fps␤»
22:12 timotimo m: say "{ 4 * 1024 * 1024 / 20 } P6bigint fit into a nursery"
22:12 camelia rakudo-moar 620f4e: OUTPUT«209715.2 P6bigint fit into a nursery␤»
22:13 timotimo m: say "{ 4 * 1024 * 1024 / (20 * 320 * 240) } frames worth of p6bigint fit into a nursery"
22:13 camelia rakudo-moar 620f4e: OUTPUT«2.730667 frames worth of p6bigint fit into a nursery␤»
22:58 vendethiel joined #moarvm
23:39 vendethiel joined #moarvm

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