01:41
guifa left
02:40
MasterDuke joined
|
|||
MasterDuke | some random numbers from adding prints to MVM_string_utf8_decode() to perhaps inspire ideas | 02:43 | |
when compiling CORE.c: | 02:44 | ||
14 decoding 12 bytes into 12 GRAPHEME_8 chars | |||
14 decoding 67 bytes into 67 GRAPHEME_8 chars | |||
16 decoding 11 bytes into 11 GRAPHEME_8 chars | |||
37 decoding 30 bytes into 10 GRAPHEME_32 chars | |||
60 decoding 3 bytes into 1 GRAPHEME_32 chars | |||
145 decoding 86 bytes into 86 GRAPHEME_8 chars | |||
577 decoding 106 bytes into 106 GRAPHEME_8 chars | |||
659 decoding 16 bytes into 12 GRAPHEME_32 chars | |||
705 decoding 4 bytes into 1 GRAPHEME_32 chars | |||
1330 decoding 15 bytes into 13 GRAPHEME_32 chars | |||
1330 decoding 16 bytes into 14 GRAPHEME_32 chars | |||
1410 decoding 2 bytes into 1 GRAPHEME_32 chars | |||
2443 decoding 14 bytes into 12 GRAPHEME_32 chars | |||
2727 decoding 13 bytes into 11 GRAPHEME_32 chars | |||
14933 decoding 12 bytes into 10 GRAPHEME_32 chars | 02:45 | ||
when running `raku -e 'my $s = 0; my $R = "rakudo/README.md".IO; my $L = "rakudo/LICENSE".IO; for ^2_000 { $s += $R.slurp.lines.elems; $s += $L.slurp.lines.elems; }; say $s;'`: | 02:46 | ||
14 decoding 11 bytes into 9 GRAPHEME_32 chars | |||
14 decoding 12 bytes into 12 GRAPHEME_8 chars | |||
14 decoding 15 bytes into 13 GRAPHEME_32 chars | |||
16 decoding 11 bytes into 11 GRAPHEME_8 chars | |||
23 decoding 3 bytes into 1 GRAPHEME_32 chars | |||
37 decoding 30 bytes into 10 GRAPHEME_32 chars | |||
41 decoding 12 bytes into 10 GRAPHEME_32 chars | |||
70 decoding 14 bytes into 12 GRAPHEME_32 chars | |||
2000 decoding 8651 bytes into 8646 GRAPHEME_32 chars | |||
2000 decoding 8902 bytes into 8902 GRAPHEME_8 chars | |||
now, what do these numbers inspire for optimization ideas? | 02:47 | ||
there have been lots of new fast utf8 decoding libraries in the past couple years. i think most aren't using/doing NFG, but can we adopt and adapt them for a fast path and easily+quickly fall back to what we have now if/when they hit an NFG case? | 02:51 | ||
coleman | what does NFG case mean | 02:52 | |
MasterDuke | normal form grapheme. and i'm not 100% sure i'm making sense | 02:53 | |
coleman | I randomly found this function-tracer today github.com/namhyung/uftrace?tab=re...se-uftrace | 03:00 | |
MasterDuke | oh, that looks interesting | 03:02 | |
coleman | I've played with bpftrace, but it's super low level. This seems to have more useful stuff built in. Needs a couple of compiler flags and that's it. | 03:03 | |
To be honest I don't know how to get it in the mix with raku->nqp->moarvm | 03:04 | ||
MasterDuke | well, just running it with -P sort of works for raku | 03:15 | |
but i think it's not following the fork/exec in the runner | |||
coleman | yeah i was thinking you need to wrap the nqp runner | 03:18 | |
how is that invoked? | |||
if it is one place, that is. maybe the runner is invoked from many places. i don't know, myself | 03:19 | ||
MasterDuke | `uftrace record -e -l -a -P . -- uftrace record -e -l -a -P . -- raku -e 'say "hi"'` gives a segfault from uftrace, but i do actually get some useful information from `uftrace report` after | 03:24 | |
doh, errant double paste | |||
the recordings are large, i think ~500mb for `say "hi"` | 03:26 | ||
coleman | Filtering options? github.com/namhyung/uftrace/blob/m...on-options | 03:37 | |
04:05
MasterDuke left
07:09
[Coke] left
07:11
[Coke] joined
10:09
sena_kun joined
13:37
guifa joined
15:49
lizmat left
|
|||
timo | can we try how using only 8 bits out of 32 for our strings impacts collisions, if at all? | 16:43 | |
i feel like we should be able to at least use the storage of 32bit in situ or blob directly with the hash function instead of 32bit at a time? | 16:58 | ||
if we're smart? | |||
i guess calling _withSeed multiple times with the output of the previous call isn't the same as running the hash with the same input but at once | 16:59 | ||
i guess siphash used to have the "finish" function split out, so we could do what we did even with strands-based strings | 17:00 | ||
and rapidhash has it built into rapidhash_internal at the end and can't be split out | |||
[Coke] | we can apply the rapidhash update right after release, and I'll trigger a blin run with it | 17:04 | |
jdv | thats so low level youd think spectest would cover, no? | 17:06 | |
timo | yeah we don't expose the hash value of a string to user space in any way, i think it shouldn't cause trouble in user code if it doesn't blow up any spec tests | 17:08 | |
[Coke] | .... ok | 17:15 | |
I'm happy to defer to jdv there. | |||
jdv | be my guest;) its just so resource intensive and itd be caught on the normal run if it somehow broke something. | 17:17 | |
[Coke] | normal run already done | 17:25 | |
jdv | i meant the next one but i saw that, cool. is it all figured? | 17:46 | |
17:48
sena_kun left
17:49
sena_kun joined
17:51
mst left,
lizmat joined,
mst joined,
lizmat left
17:53
lizmat joined
|
|||
[Coke] | If we're not 100% sure, let's wait til post release. | 17:54 | |
Always fine to have something queued up for the next one | 17:55 | ||
lizmat | hmmm... the REA harvester just crashed with: | 17:58 | |
MoarVM oops: Unknown spesh arg guard opcode -1172811872 reached | |||
[Coke] | O_o; | 18:01 | |
timo | lizmat: arm, right? | 18:34 | |
lizmat | apple silicon indeed | ||
timo | that kind of thing should be fixed by my moarvm commit from ... uhh | 18:35 | |
that one pull request about arm freezes | |||
same underlying issue, but the error message i put in would otherwise have been a freeze | 18:36 | ||
so, moar version please, and maybe upgrade to very latest? | |||
BBIAB | |||
lizmat | it *is* the very latest | 18:39 | |
Welcome to Rakudo™ v2024.12-49-gb4d798329. | |||
Implementing the Raku® Programming Language v6.d. | |||
Built on MoarVM version 2024.12-22-gcaf97bf07. | |||
(the harvester runs on my dev machine) | 18:40 | ||
18:40
[Coke] left
|
|||
timo | oh it was never merged? | 21:25 | |
you will want atomic_accesses_to_spesh_arg_guard | |||
lizmat | I will wait until after the release :-) | 21:42 | |
23:04
sena_kun left
|