Parrot 4.0.0 "Hyperstasis" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 18 January 2012.
00:26 whiteknight joined
whiteknight good evening, #parrot 00:26
cotto hi whiteknight 00:32
whiteknight hey cotto. how you doin'? 00:33
I want to get my pcc_ops branch up to date, tested, and merged soon 00:59
With that in we can start updating IMCC to generate better ops, and update winxed to generate better call sequences 01:00
I want to see what bacek's pcc work is going to change first though
I suspect, from what little I've seen, his work is going to complement what I'm doing nicely and bring massive win 01:06
bacek_at_work whiteknight, it will not unfortunately... 01:07
whiteknight bacek_at_work: what will not? 01:08
bacek_at_work Sub.invoke and a lot GC pressure kills everything
repcc will not improve PCC speed
pcc_ops will not do it either
for example in "fib.pir": 01:11
20% time spent in fill_params
20% in build sig object (including GC cost)
30% of time spent in Sub.invoke (including GC cost) 01:12
whiteknight, gist.github.com/1720728 01:14
this is example of how fast parrot is.
Calculating of prime numbers (without Sub calls)
whiteknight bacek_at_work: what is that third benchmark? How is it so much better? 01:15
no PCC
?
bacek_at_work INT vs Integer
Integer PMC
second benchmark create too much GCables
01:15 dngor joined
whiteknight we're going to need to make PMC creation cheaper soon 01:17
bacek_at_work how?
whiteknight I don't know
GC cost really is the biggest part of it
bacek_at_work me too
whiteknight CallContext and PCC need to get faster 01:18
but maybe we need to clean up some of the logic first
the pcc_ops work does have an improvement on performance. It's not huge but it is something 01:19
bacek_at_work just because you are omitting all checks 01:20
01:20 dngor_ joined
whiteknight yeah, the checks are unnecessary if we have the information at compile-time 01:20
bacek_at_work add something like "One more hash to store used param names for error reporting" and it will be slower 01:21
compile time is not enough
whiteknight of course, but those cases are rare
bacek_at_work take "hash :flat" vs ".param foo :named" as example
with current PCC "promise" we have to check that 01:22
"hash" has only one key "foo"
whiteknight yeah, I know. we will still have get_params, we will use it less when we don't need it
bacek_at_work which means creating hash of used keys
whiteknight picking when we do and do not use it is important
bacek_at_work and we try to squeeze it through our crappy VTABLE inferface... 01:23
whiteknight vtables are terrible
bacek_at_work ~/src/parrot (master) $ time ./parrot examples/benchmarks/primes2_inline.pir
N primes calculated to 5000 is 4999
last is: 4999
real\t0m0.374s
user\t0m0.352s
sys\t0m0.012s 01:24
~/src/parrot (master) $ time ./parrot examples/benchmarks/primes2_i.pir
N primes calculated to 5000 is 670
last is: 4999
real\t0m0.525s
user\t0m0.372s
sys\t0m0.008s
nice one. PCC cost about 30% of time...
we have to get rid of current PMC design
whiteknight that's why I want 6model. It gives us a chance to redesign everything from the bottom
bacek_at_work we have to get rid of storing raw pointers in PMCs
whiteknight yes 01:25
bacek_at_work we do need compacting GC with simple bump-pointer allocation
we do need simple set of ops to build JIT
whiteknight you think it's worth the overhead?
the compacting GC?
bacek_at_work compacting GC should be fast.
it's much more cache-friendly 01:26
or something like immix GC
still - raw pointers in PMC are stopping from implementing them
no, let me rephrase
absence of information about PMC memory layout stopping us 01:27
because we can't update pointers
whiteknight right, we can't just update pointers in our current state 01:29
we would need all sorts of crazy magic to even attempt it
shit. I hate bootstrap-ops 01:45
02:20 Util joined 02:27 wagle joined 02:41 benabik joined 03:25 logie joined 03:50 dngor joined 05:17 logie joined 05:19 logie left 06:01 jsut joined, dngor joined 06:19 PacoAir joined 07:06 dngor joined 07:31 dngor joined 08:09 dm8 joined
dalek rrot/repcc: d57ea95 | bacek++ | lib/Parrot/Pmc2c/PMC.pm:
Fix bug in Pmc2c which always generate WriteBarrier even :manual_wb was specified.
08:39
08:44 jsut_ joined 08:49 mj41 joined
bacek aloha, 2_486_014_571 08:54
aloha, 2_486_014_571 / 150_155_435 * 100
aloha, 2486014571 / 150155435 * 100
aloha bacek: 1655.62743100175
bacek aloha, 150155435 / 2486014571 * 100 08:55
aloha bacek: 6.04
bacek hmm
09:27 lucian joined 09:48 Psyche^ joined 09:58 lucian joined 11:45 dm8 joined
dalek p/bs: 5deb755 | jnthn++ | src/6model/serialization. (2 files):
Refactor serialization code to eliminate a bunch of code duplication and make it more extensible.
12:19
p/bs: 0deef9b | jnthn++ | src/6model/serialization. (2 files):
Similar refactor for deserialization.
13:09 bluescreen joined 13:34 dngor joined 14:09 fperrad joined 14:19 dm8 joined, mtk joined 14:41 PacoAir joined 15:01 benabik joined 15:34 PacoAir joined 15:45 jsut joined 15:50 dmalcolm joined
dalek p: 2208373 | jnthn++ | src/QAST/Compiler.nqp:
Implement subtype 'fail' of anchors in QAST::Compiler.
16:28
kudo/nom: 6b62395 | jnthn++ | tools/build/NQP_REVISION:
Bump to latest NQP to get <!> fix.
16:35
16:45 benabik joined
cotto ~~ 17:55
17:59 PacoAir joined 18:15 bluescreen joined 18:21 bacek joined
dalek p/bs: 3e5b40c | jnthn++ | t/serialization/02-types.t:
First few basic tests for type serialization, just knowhow for now.
18:29
p/bs: fdf9376 | jnthn++ | src/6model/serialization.c:
Start stubbing in STable serialization/deserialization.
18:30
p/bs: d82072a | jnthn++ | t/serialization/02-types.t:
Simplify initial type serialization test - use the P6int REPR (P6opaque is needier).
p/bs: 23841b2 | jnthn++ | src/6model/reprs/KnowHOWREPR.c:
Implement serialize/deserialize REPR functions for KnowHOWREPR.
p/bs: ad6c86b | jnthn++ | src/6model/serialization.c:
Make sure we create STables that are properly initialized when deserializing.
p/bs: f3156d5 | jnthn++ | t/serialization/02-types.t:
Oops, correct test count.
p/bs: 3e8a06a | jnthn++ | src/6model/knowhow_bootstrapper.c:
A KnowHOW really should publish a type check cache, so it at least matches itself.
p/bs: 54ce490 | jnthn++ | src/6model/serialization.c:
Serialization/deserialization of type check caches.
18:31 mj41 joined
dalek kudo/nom: acbec86 | moritz++ | tools/build/NQP_REVISION:
fix NQP_REVISION
19:07
19:11 particle left 19:12 particle joined 19:19 davidfetter joined 19:46 lucian joined 20:27 bluescreen joined 20:46 dmalcolm joined 21:02 davidfetter joined 21:55 contingencyplan joined, bluescreen joined 22:04 GodFather joined
dalek p/bs: d638979 | jnthn++ | t/serialization/02-types.t:
Add a test case for serializing a P6opaque based type with knowhow meta-object; it has a single attribute.
22:06
p/bs: 5d153d9 | jnthn++ | src/6model/serialization.c:
Should not try to serialize body of type objects, as they don't have one.
p/bs: 8b5594d | jnthn++ | src/6model/s (2 files):
Add hook for REPR data serialization/deserialization.
p/bs: ea75288 | jnthn++ | src/6model/serialization.c:
Remove unused variable to get rid of a warning.
p/bs: 4df246b | jnthn++ | src/6model/s (3 files):
Add write/read functions for serializing references to STables.
p/bs: 2b2818f | jnthn++ | src/6model/reprs/P6opaque.c:
Get serialization and much of the deserialization (minus the derived info we'll re-calculate) in place for the P6opaque REPR data. Gets the P6opaque-based type with attribute tests passing.
22:34 davidfetter joined 23:01 PacoAir joined 23:03 davidfetter joined