Perl 6 - the future is here, just unevenly distributed

IRC log for #parrot, 2014-06-10

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:24 rurban joined #parrot
00:26 rurban1 joined #parrot
02:01 rurban1 analyzed WB timings. actually vtable methods are a bit faster now, but method calls got a bit slower.
03:42 rurban joined #parrot
04:44 jsut joined #parrot
05:36 bighugedog joined #parrot
06:49 FROGGS joined #parrot
07:33 basiliscos joined #parrot
09:47 Psyche^ joined #parrot
12:25 rurban joined #parrot
13:35 rurban joined #parrot
13:47 rurban joined #parrot
14:10 bluescreen joined #parrot
14:34 basiliscos joined #parrot
14:37 dalek parrot/rurban/pmc2c_orig2-gh1069: 0fcc744 | rurban++ | docs/pmc.pod:
14:37 dalek parrot/rurban/pmc2c_orig2-gh1069: [docs] more work on pmc.pod
14:37 dalek parrot/rurban/pmc2c_orig2-gh1069:
14:37 dalek parrot/rurban/pmc2c_orig2-gh1069: Reformatting and removed UnionVal which was removed with 1.6.0
14:37 dalek parrot/rurban/pmc2c_orig2-gh1069: review: https://github.com/parrot/parrot/commit/0fcc744a18
14:37 dalek parrot/rurban/pmc2c_orig2-gh1069: 46a7866 | rurban++ | ChangeLog:
14:38 dalek parrot/rurban/pmc2c_orig2-gh1069: ChangeLog: add description for the pmc2c_orig2-gh1069 GSOC project #1
14:38 dalek parrot/rurban/pmc2c_orig2-gh1069:
14:38 dalek parrot/rurban/pmc2c_orig2-gh1069: Document how to treat non-core dynpmc's. If they need to be changed or
14:38 dalek parrot/rurban/pmc2c_orig2-gh1069: how they can be optimized.
14:38 dalek parrot/rurban/pmc2c_orig2-gh1069: review: https://github.com/parrot/parrot/commit/46a7866acb
14:39 rurban_ Chirag: can you look out for more unneeded WB's? I suspect there are more optimizations possible because we are bit too slow right now. Start with the methods used in the benchmark
14:40 rurban_ https://github.com/parrot/parrot-bench
14:41 rurban_ ResizablePMCArray, CallContext and such
14:42 rurban_ I suspect 2 more can be found (from the benchmark timings)
14:45 Chirag joined #parrot
14:46 Chirag yes.. I will start doing that right away..
14:49 rurban_ It's just a feeling, but we should be a bit faster, and we were 2-4% faster already
14:50 rurban_ I'm testing rakudo right now, and then it looks like we can merge it for the next 6.5.0 release
14:53 Chirag nice!
14:54 rurban_ The good thing is, the benchmarks are now pretty stable. the bad, our branch is a bit slower than master
14:57 rurban_ nqp built fine with the new PMCs
15:00 Chirag even the METHODS need to be checked i think .. I wasnt sure about many of them unlike VTABLE
15:02 rurban_ vtable's are actually a bit faster, methods got slower, yes. But this cannot be as methods always had WBs
15:03 rurban_ rakudo-p tested fine
15:08 Chirag great..
15:10 rurban_ the perl6 spectest is also doing fine
15:11 rurban_ you could check dynpmc's also if you got time
15:12 rurban_ they are the same, just loaded on request (shared libs)
15:13 rurban_ but I doubt that there will some opportunities. more likely in nqp/perl6 6model code
15:18 Chirag hmm..
15:21 bluescreen_ joined #parrot
15:24 wagle joined #parrot
16:14 FROGGS joined #parrot
17:13 Chirag joined #parrot
17:32 rurban joined #parrot
17:34 Chirag rurban: I am still getting SEGV for gc.t and the build fails
17:34 rurban_ really?
17:34 Chirag yeah
17:34 rurban_ with my branch and  make clean?
17:34 Chirag i did a make clean archclean
17:34 Chirag no my merged branch
17:34 rurban_ I'm having another meeting now
17:35 Chirag np
17:35 rurban_ I think I got all your latest changes already in
17:35 Chirag ya.. our branches are at the same point
17:41 Chirag your branch is all good... Something wrong with mine
17:42 basiliscos joined #parrot
17:53 Chirag did a --hard reset to your branch .. works now
17:57 rurban_ :)
17:57 rurban_ yeah, I added some github comments to your latest commits
18:00 Chirag ya i saw those ... earlier i did a git merge to ur branch.. "checkout --theirs" .. add and commit .. didnt work :P
18:02 rurban_ git fetch; git pull --rebase <branch> is usually easier than merge
18:02 Chirag i ll remember :)
18:25 rurban joined #parrot
18:29 Chirag rurban: do METHODs and VTABLEs that simply pass on SELF really require a WB??
18:29 Chirag for instance:
18:29 Chirag METHOD unshift(PMC* value) :manual_wb {
18:29 Chirag VTABLE_unshift_pmc(INTERP, SELF, value);
18:29 Chirag }
18:30 rurban_ VTABLE_unshift_pmc does the WB here
18:30 rurban_ and yes, it changes the internal array
18:31 rurban_ push,pop,shift,unshift are all destructive
18:31 Chirag oh
18:31 rurban_ perl is not really a functional language
18:32 rurban_ everything side-effects. in perl5 even when just looking at a value will create lots of undef values
18:32 Chirag oh.. i was under an impression that these objects would simply be passed untouched
18:32 rurban_ no, aren't they :write? they should be
18:33 Chirag vtable.tbl defines only for VTABLEs ..
18:34 Chirag so  VTABLE_unshift_pmc is a write
18:34 rurban_ hmm unshift is no VTABLE? strange
18:34 rurban_ which pmc is this?
18:34 Chirag resizablePmcArray
18:37 Chirag actually, I was wondering the same thing even for this :
18:37 Chirag VTABLE void unshift_pmc(PMC *value) {
18:37 Chirag do_unshift(INTERP, SELF, value);
18:37 Chirag }
18:37 rurban_ still benchmarking rakudo...
18:37 Chirag if SELF goes untouched
18:37 rurban_ do_unshift changes SELF
18:38 Chirag hmm so both the caller and the callee have to take care of things ..
18:41 rurban_ yes
18:42 rurban_ do_unshift changes the array size and does a memmove() which is very destructive
18:44 rurban_ Parrot_ResizablePMCArray_nci_unshift is :manual_wb because VTABLE_unshift_pmc already does the WB
18:44 Chirag understood
18:45 rurban_ The next task would be e.g. in Parrot_ResizablePMCArray_nci_unshift to Parrot_pcc_fill_params_from_c_args(interp, _call_object, "PiP",...) to 2 lines of C code to set the 2 values
18:46 rurban_ 1st self and 2nd value
18:48 rurban_ METHOD append could change the RETURN to return; because SELF is not changed there and no return values need to be prepared
18:49 Chirag so it becomes a no_wb?
18:50 Chirag but PMC ** const this_data = PMC_array(SELF) and two more PMCs are assigned
18:50 rurban_ no, we don't care about that one branch with the early exit.
18:51 rurban_ only the frst !m return
18:51 Chirag yes..
18:51 Chirag the second RETURN should stay right?
18:52 dalek parrot/rurban/pmc2c_orig2-gh1069: 7a8611b | rurban++ | src/pmc/resizablepmcarray.pmc:
18:52 dalek parrot/rurban/pmc2c_orig2-gh1069: [pmc] optimize resizablepmcarray.append if other is empty
18:52 dalek parrot/rurban/pmc2c_orig2-gh1069:
18:52 dalek parrot/rurban/pmc2c_orig2-gh1069: skip the WB then
18:52 dalek parrot/rurban/pmc2c_orig2-gh1069: review: https://github.com/parrot/parrot/commit/7a8611b2f2
18:53 Chirag shouldnt we make this manual??? otherwise a WB is put in before the return ?
18:53 rurban_ nope, not in this case. check the C file
18:54 Chirag hmm.. but why doesnt it add it?
18:54 rurban_ METHODs have their own logic. They just look at RETURN
18:55 rurban_ and add the WB there
18:55 Chirag I have a candidate:
18:55 Chirag set_pmc
18:56 Chirag does the first return get a WB before it?
19:00 rurban_ I also just fixed set_pmc. no WB if SELF is not changed
19:01 Chirag yes
19:01 Chirag there it was just "SELF == value"
19:06 dalek parrot/rurban/pmc2c_orig2-gh1069: a22761a | rurban++ | src/pmc/resizablepmcarray.pmc:
19:06 dalek parrot/rurban/pmc2c_orig2-gh1069: [pmc] optimize ResizablePMCArray WBs
19:06 dalek parrot/rurban/pmc2c_orig2-gh1069:
19:06 dalek parrot/rurban/pmc2c_orig2-gh1069: skip some unneeded WBs
19:06 dalek parrot/rurban/pmc2c_orig2-gh1069: review: https://github.com/parrot/parrot/commit/a22761a8a4
19:06 rurban_ this was a forced push
19:07 Chirag One more:
19:07 Chirag CallContext -- set_attr_str
19:08 rurban_ looks good to me
19:08 Chirag can we put manual WBs in the first two if blocks?
19:08 rurban_ not needed since this error doesn't happen
19:09 Chirag oh.. ok
19:09 rurban_ we never specialize on exceptions. those branches are almost never taken are slow enough that we don't care if it has a superfluous WB
19:10 rurban_ whow, down to 9.972371830 +- 0.09
19:10 Chirag WOW!
19:11 rurban_ But I guess I've changed the compiler, from clang to gcc-4.9 with -O3
19:12 rurban_ I'll bench now again fully for the 4 last branches, for r in RELEASE_6_3_0 RELEASE_6_4_0 master rurban/pmc2c_orig2-gh1069; do ../bench.sh $r; done
19:13 rurban_ gcc-4.9 is pretty good actually. looks better than clang-3.4
19:13 Chirag i have never used clang
19:14 rurban_ clang is much faster and uses less memory. but it doesn't support -g3. so no macro expansions
19:14 rurban_ for fulltest I always used clang so far
19:17 rurban_ whow. from 10.437312630 down to 10.156414856
19:19 Chirag .28 !
19:19 rurban_ maybe we'll find more such
19:21 Util #ps in 9m
19:22 rurban_ 2.7%
19:23 Chirag :D
19:27 Chirag integer.pmc -- decrement() has a redundant WB?
19:29 rurban_ ah, yes. think so.
19:33 dalek parrot/rurban/pmc2c_orig2-gh1069: 0df5c8e | rurban++ | src/pmc/integer.pmc:
19:33 dalek parrot/rurban/pmc2c_orig2-gh1069: [pmc] optimize Integer.decrement WB
19:33 dalek parrot/rurban/pmc2c_orig2-gh1069:
19:33 dalek parrot/rurban/pmc2c_orig2-gh1069: remove one redundant WB, found by Chirag++
19:33 dalek parrot/rurban/pmc2c_orig2-gh1069: review: https://github.com/parrot/parrot/commit/0df5c8eac6
19:49 Chirag rurban: one more :
19:49 Chirag float.pmc -- sinh()
19:50 rurban_ yes, your turn to commit it :)
19:50 Chirag alright :)
20:01 Chirag I am not sure about these but
20:01 Chirag in string.pmc  -- replace() , to_int(), trans() should be manual_wb?
20:06 Chirag rurban_ : ?
20:13 dalek parrot/rurban/pmc2c_orig2-gh1069: 7af5a55 | ZYROz++ | src/pmc/float.pmc:
20:13 dalek parrot/rurban/pmc2c_orig2-gh1069: optimize Float.sinh WB
20:13 dalek parrot/rurban/pmc2c_orig2-gh1069: review: https://github.com/parrot/parrot/commit/7af5a55abf
20:15 rurban_ replace: yes. to_int: yes, trans :no_wb
20:15 Chirag will change
20:17 rurban_ to_int is actually :no_wb
20:17 Chirag oh
20:21 rurban_ `TEST_JOBS=4 perl t/harness` is actually pretty fast
20:22 rurban_ make -j4 -s && TEST_JOBS=4 perl t/harness
20:23 rurban_ && TEST_JOBS=4 perl t/harness --gc-debug t/pmc/*.t
20:24 dalek parrot/rurban/pmc2c_orig2-gh1069: e12e1b1 | ZYROz++ | src/pmc/string.pmc:
20:24 dalek parrot/rurban/pmc2c_orig2-gh1069: [pmc] optimize WBs in some String.METHODs
20:24 dalek parrot/rurban/pmc2c_orig2-gh1069: review: https://github.com/parrot/parrot/commit/e12e1b130c
20:25 rurban_ 10.052022194
20:26 Chirag :D
20:27 Chirag 3.7%
20:43 dalek website: ZYROz++ | GSoC 2014 - Report 3
20:43 dalek website: http://www.parrot.org/zyroz3
20:44 rurban_ tada! looks good, Chirag++
20:44 Chirag thanks! :)
20:47 rurban_ you should brag more about how many PMCs you fixed and looked over, and then again, and then again.
20:47 Chirag will do..
20:47 Chirag :D
20:48 rurban_ I only looked over them once, you did 3x
20:48 rurban_ And it's 95 PMC's with how many methods?
20:49 Chirag 7-8 on an avg
20:51 rurban_ 4328 methods at all
20:52 rurban_ core PMC's, not dynpmc's
20:53 Chirag ooo
20:53 Chirag string itself has more than 40
20:53 rurban_ and maybe explain for perl6 folks how to check if they need :manual_wb in their own PMCs (see the new docs)
20:59 rurban_ egrep -c '(VTABLE|METHOD|MULTI)' src/pmc/*.pmc | cut -d: -f2 > xx
21:06 Chirag yes 4328 :)
21:06 rurban_ I used lisp for the (+ ...). Forget how to use calc or bc with this
21:06 rurban_ and was too lazy to use perl
21:07 Chirag i copy pasted into libre calc :P
21:17 Chirag Saying that it "Behaved well even with Rakudo!" is fine right?
21:19 rurban_ No rakudo regressions, right
21:21 rurban_ No new rakudo benchmarks yet. The last one showed no improvements. And we still don't use parrot -O2 with rakudo yet, because of the old icu problem. Not your beer., well be about 5% I guess
21:21 Chirag hmm.. i ll remove that and say improvement of 5%
21:23 rurban_ -O2 was even slower.
21:23 rurban_ rather say 2.5 - 5% expected
21:23 rurban_ parrot -O2 was 0.9% slower
21:24 rurban_ old pmc2_orig was 0.18% faster
21:25 Chirag ok..
21:26 Chirag argh! "Your submission has triggered the spam filter and will not be accepted."
21:26 rurban_ ??
21:26 Chirag blog
21:27 Chirag how long does one have to wait?
21:27 rurban_ https://drupal.org/node/353588
21:27 rurban_ I'll check
21:28 rurban_ Looks good. It's online
21:28 Chirag done!
21:29 Chirag will leave now.. Bye! :)
21:29 rurban_ thank,s, bye
21:49 rurban_ yes, nqp 6model has several WB optimization possibilities
22:05 GeJ joined #parrot
23:23 rurban joined #parrot

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

Parrot | source cross referenced