MasterDuke | (and i couldn't make it a multi) | 00:00 | |
and switching a bunch of things to use my find_symbol2, but it didn't seem to make much of a difference | |||
TimToady | WANTEDOUTERBLOCK was a hack because of single-pass assumptions in find_symbol, so we should fix that | ||
basically, wanted propagation can descend down into blocks we've already left in the main parse pass | 00:01 | ||
we should have some kind of a tail-shared structure for blocks instead of a strict stack there that pops too soon | 00:03 | ||
jnthn | Blocks to have an annotation that points to their enclosing block | 00:04 | |
TimToady | $*WANTEDOUTERBLOCK lookup by itself causes about 1% of our current overhead | ||
don't recall offhand why following those didn't work | |||
seem to recall trying... | |||
something sets them too late, iirc | 00:05 | ||
jnthn | I may be misremembering, but I thought they were set at the moment the inner QAST::Block comes into existence | 00:07 | |
Time for me to go rest... 'night | 00:08 | ||
TimToady | g'night | ||
(might've been simply that doing that many hash lookups was a lot slower than using the stack) | 00:09 | ||
((but I do seem to recall it crashing when I tried)) | 00:10 | ||
01:19
geekosaur joined
01:40
pyrimidine joined
01:52
ggoebel joined
02:48
ilbot3 joined
03:56
agentzh joined
05:11
agentzh joined
07:34
domidumont joined
07:48
pyrimidine joined
10:19
Ven joined
10:35
agentzh joined
12:23
pyrimidine joined
12:36
geekosaur joined
13:14
vendethiel joined
|
|||
MasterDuke | jnthn: just doing some more testing with radix and jitting. i set MVM_JIT_LOG for a run with radix (which i created cases for in src/jit/graph.c) and radix2 (an identical copy of radix which i created an nqp op for to make testing easier) | 13:15 | |
and the log is exactly identical | |||
which i guess is no real surprise, since everything is being interpreted | 13:16 | ||
any suggestions for what to test next? | |||
jnthn | MasterDuke: Are you testing that with NQP? | 13:18 | |
If so, did you try putting the code under test inside of a sub and calling that? | 13:19 | ||
MasterDuke | yeah. oh right, there was some different behavior when i tested something from rakudo instead | ||
jnthn | It looks like for some reason the program mainline in NQP doesn't end up getting OSR'd | ||
MasterDuke | ah! i was thinking about doing that (put in a sub) that last night and then fell asleep at the keyboard, thanks for the reminder | 13:20 | |
jnthn | :) | 13:21 | |
MasterDuke | heh. so the OSR section say none. but there is an OSR graphic by the sub and we're now at 20% jitted | 13:25 | |
lizmat | MasterDuke: the --profile is sometimes incorrect on some OSR / JIT info | 13:26 | |
you should probably check the MVM_JIT_LOG to be sure | |||
jnthn | Curious :S | ||
I also get really weird rendering of the profiler UI in Firefox, where it shows all tab content one below the other | |||
MasterDuke | how do i know if something was jitted in the log? | 13:27 | |
jnthn | If it's in there and there's no BAIL, iirc | 13:28 | |
MasterDuke | the log is now different between using radix and radix2, but the string 'radix' isn't in either log | 13:29 | |
but just timing a large number of iterations is showing radix noticeable faster than radix2 | 13:30 | ||
at 20m iterations, radix (which i jitted) is now 1s faster than radix2 | 13:32 | ||
at 1m iterations, perf stat -B is showing ~240m fewer instructions and 25m fewer branch misses for radix vs radix2 | 13:35 | ||
and a profile of radix2 shows 20% spesh vs 20% jit for radix | 13:36 | ||
13:47
pyrimidine joined
|
|||
samcv | jnthn, i keep getting that error ===SORRY!=== | 13:51 | |
When invoking 5694 'parameterize', provided outer frame 0x55734b0873e0 (58 '!protoregex_nfa') does not match expected static frame 0x55734ba90718 (5695 '') | |||
how do i stop it | |||
i cannot launch my program :( | |||
MasterDuke | does --ll-exception show where it's happening? | 13:52 | |
samcv | MasterDuke, gist.github.com/b6dfe9f89158a14b2c...51208a9934 | 14:00 | |
MasterDuke | oof, that's long and complicated. looks like you're doing something with roles? | 14:03 | |
samcv | does augmenting count as roles? | ||
yeah if i uncomment this it stops erroring | 14:04 | ||
MasterDuke | don't really know, i haven't done much with either. brokenchicken might have some idea | ||
samcv | dammit | ||
brokenchicken | ? | 14:06 | |
idea of what? | |||
Of that error? No idea. | |||
MasterDuke | samcv: maybe paste code that's causing it somewhere? | 14:07 | |
samcv | well it's a whole lot of code | ||
my UCD rewrite | |||
Geth | arVM: MasterDuke17++ created pull request #514: JIT MVM_radix() like MVM_bigint_radix() |
14:13 | |
arVM: samcv++ created pull request #515: Make radix 50% faster with Unicode Nd, add East_Asian_Width prop. |
14:30 | ||
samcv | kewl | ||
MasterDuke | ah, i thought you were going to be able to change `ch = atoi(MVM_unicode_codepoint_get_property_cstr(tc, ch, MVM_UNICODE_PROPERTY_NUMERIC_VALUE));` into ` ch = MVM_unicode_codepoint_get_property_int(tc, ch, MVM_UNICODE_PROPERTY_NUMERIC_VALUE));` | 14:33 | |
to get rid of the atoi() completely | 14:35 | ||
14:37
agentzh joined
14:45
ggoebel joined
15:15
zakharyas joined
15:22
FROGGS joined
15:24
pyrimidine joined
|
|||
samcv | eventually | 15:32 | |
when the rewrite of ucd2c.pl i scomplete | 15:33 | ||
tho if it used the data my script that works already has we could do that | |||
and we'd use numeric_value_Numerator | |||
which would store integer values, (all the digits have 1 as denominator so it is fine) | |||
idk maybe we can merge the scripts before the whole rewrite is complete idk | 15:34 | ||
though that little change already makes it 50% faster, so making it not use atoi will make it prolly another 100% faster | |||
maybe more | |||
MasterDuke | cool | 15:36 | |
samcv | same with decomposition and such | 15:38 | |
i keep getting weird errors | 15:39 | ||
for $rev-hash.keys.sort(+*) i am getting Too many positionals passed; expected 0 arguments but got 1 | 15:40 | ||
wtf | |||
16:06
domidumont joined
16:20
pyrimidine joined
16:45
geekosaur joined
17:50
geekosaur joined
18:34
agentzh joined
19:03
agentzh joined
19:18
pyrimidine joined
19:43
pyrimidine joined
20:08
agentzh joined
20:47
agentzh joined
21:29
pyrimidi_ joined
22:13
agentzh joined
22:34
geekosaur joined
22:50
pyrimidine joined
|
|||
MasterDuke | timotimo: i find this interesting. the (almost exactly) same code in nqp vs perl6 takes half the time in nqp, even though it's only speshed vs jitted in perl6 | 23:05 | |
nqp: 'sub a() { my $f := nqp::open("small_compile.sql", "r");my str $l; my int $s := 0; while $l := nqp::readlinefh($f) { ++$s }; return $s }; say(a())' | |||
camelia | ( no output ) | ||
MasterDuke | perl6: 'use nqp; sub a() { my $f := nqp::open("small_compile.sql", "r"); my str $l; my int $s = 0; while $l = nqp::readlinefh($f) { ++$s }; return $s }; say(a())' | 23:06 | |
camelia | rakudo-jvm fb4f16: OUTPUT«WARNINGS for <tmp>:Useless use of constant string "use nqp; sub a() { my $f := nqp::open(\"small_compile.sql\", \"r\"); my str $l; my int $s = 0; while $l = nqp::readlinefh($f) { ++$s }; return $s }; say(a())" in sink context (line 1)» | ||
..rakudo-moar 5b3ac8: OUTPUT«WARNINGS for <tmp>:Useless use of constant string "use nqp; sub a() { my $f := nqp::open(\"small_compile.sql\", \"r\"); my str $l; my int $s = 0; while $l = nqp::readlinefh($f) { ++$s }; return $s }; say(a())" in sink context (line 1)» | |||
MasterDuke | whoops, didn't mean to actually run those | ||
the perl6 version adds `use nqp`, and turns two binds into assigns, because you can't bind to native types in perl6 | 23:07 | ||
44.25% moar libmoar.so [.] MVM_string_utf8_decodestream | 23:12 | ||
22.10% moar libmoar.so [.] find_separator.isra.6 | |||
5.67% moar libc-2.24.so [.] _int_free | 23:13 | ||
^^^ nqp version | |||
26.02% moar libmoar.so [.] MVM_string_utf8_decodestream | |||
13.93% moar libmoar.so [.] find_separator.isra.6 | |||
5.32% moar libmoar.so [.] MVM_interp_run | |||
^^^ perl6 version | |||
23:34
njmurphy joined
|