timotimo | also, a tiny bit of compression would do wonders to our .moarvm files, since we decode that part anyway | 00:01 | |
like, a quite big chunk of the serialized blob is just AAA due to 64bit numbers that are 0 | 00:03 | ||
or "small" | |||
jnthn | We shouldn't be storing serialization stuff in .moarvm any more | 00:24 | |
Uh | |||
As in, as strings we should not | |||
Should look into that | |||
I wish people would remember that if you compress, you can't mmap. | |||
As soon as your 2 processes in, you're a 50% reduction ahead. | 00:25 | ||
And s/your/you're/, but grammar is optional after drinking an eviltwin. : | 00:26 | ||
*:) | |||
As for recording where code was when a GC occurred - probably not useful. You just need to modify a tiny thing to make that happen at a different point. Or another thread can affect it. Maybe over a program than runs for a very long time you can get something interesting statistically, but the existing allocation profile already gives you data like that. | 00:28 | ||
Put another way, GC is amortized over all allocations, so which one triggers it is not really so interesting. | 00:29 | ||
timotimo | OK, fair enough | 01:13 | |
my point about the base64 thing is: we can't mmap it anyway because it's base64 and we turn it into regular data right away | 01:14 | ||
and going from base64 to regular binary data will get us from 4/3 down to 1 | |||
and since we are already base64-decoding before we read stuff from the serialized blob, we could just as well replace base64 with some compression scheme | 01:25 | ||
01:44
Util joined
02:45
JimmyZ joined
|
|||
JimmyZ_ | timotimo: I think jnthn++ meant compressing all the .moarvm like jar does blocks mmap | 02:46 | |
and you meant compressing only the string part | 02:47 | ||
timotimo | yes, only the serialisation blobs | 02:55 | |
JimmyZ_ | timotimo: + 1 to it :) | 02:57 | |
timotimo | what kind of compression library can we use without adding a dependency that our users may not have our want? | 02:59 | |
I think RLE is not good enough | |||
JimmyZ_ | pack ? | 03:00 | |
as just write strings as binary string? | 03:01 | ||
timotimo | well yeah | 03:04 | |
we would put the serialised blob somewhere where binary data can live | |||
but on top of that, having small numbers represented with fewer bytes may be worth something | 03:05 | ||
JimmyZ_ | that is, out of .moarvm files? | ||
timotimo | maybe just encoding every 64 bit chunk as a varint | ||
no, inside these files | |||
JimmyZ_ | jnthn++ said 'We shouldn't be storing serialization stuff in .moarvm any more' | 03:06 | |
timotimo | like, the bytecode section already contains binary data | ||
JimmyZ_ | I couldn't follow he | ||
timotimo | he corrected himself | ||
he meant we should not use the string heap | |||
JimmyZ_ | so why? | 03:07 | |
timotimo | so why what? | ||
JimmyZ_ | why we shouldn't store strings in .moarvm? | 03:08 | |
timotimo | no no no | ||
we should not store serialised objects in the strings | 03:09 | ||
but strings will stay where they are | |||
JimmyZ_ | oh | ||
timotimo | :) | ||
JimmyZ_ | that is, replace base64 code with binary data in Strings heap? | 03:10 | |
timotimo | I mean there is nothing wrong with storing the serialised blob as "packed" data | 03:11 | |
JimmyZ_ | ok | ||
timotimo | but there are so many null bytes | ||
we should store the serialised blob somewhere in the moarvm file that is not the string heap | |||
make a new section for serialised blobs | 03:12 | ||
JimmyZ_ | fair enough | ||
timotimo | I am very tired and should go to bed soon | ||
JimmyZ_ | and still use base64 ? | ||
good night | |||
timotimo | maybe you want to build a simple compression by using write varint | 03:13 | |
no, get rid of base64 | |||
dalek | arVM: a533a69 | jimmy++ | src/ (2 files): Small fixes. |
06:02 | |
arVM: 228e07e | jimmy++ | / (5 files): rename nodes_moar.h to nodes.h, since there is no other nodes_*.h files. |
06:45 | ||
07:46
JimmyZ_ joined
|
|||
dalek | arVM: 8fa0c7d | TimToady++ | src/6model/reprs/NFA. (2 files): detect useless SUBRULE edges |
08:32 | |
09:11
JimmyZ_ joined
09:13
lizmat joined
09:22
woolfy joined
09:32
JimmyZ_ joined
09:36
JimmyZ_ joined
10:11
brrt joined
10:40
brrt left
11:51
JimmyZ_ joined
|
|||
JimmyZ_ | timotimo: about base64, I didn't find how to replace it with varint :( | 12:32 | |
timotimo | OK, maybe i'll have a look | 12:36 | |
the problem is also that we can't just put the data back into the string heap | |||
or at least we shouldn't | |||
12:36
kjs_ joined
|
|||
timotimo | that means we need to have another way to give the serialized blob to the deserialize instruction | 12:36 | |
JimmyZ_ | why we can't? | 12:37 | |
jnthn | But...we already *do* have that way | 12:38 | |
timotimo | can the string heap store all-binary data without trouble? | ||
jnthn | That's why I can't figure out why you're seeing base64 strings. | ||
The string heap stores strings in utf-8 | |||
The seriealized data has its own binary section of the bytecode file | 12:39 | ||
timotimo | oh? | ||
i must be speaking of something else, then | |||
jnthn | And has for ages | ||
Well, we may have had some regression at some point that makes it do the base-64 thing... | |||
timotimo | check_and_dissect_input does a base64 decode on its input | ||
and one of the instructions in a moarvm --dump of a module reads 00803 deserialize loc_1_str, loc_12_obj, loc_6_obj, loc_10_obj, loc_13_obj | 12:40 | ||
where loc_1_str is the base64 encoded blob | |||
JimmyZ_ | Yeah, I saw it, I was even not sure what base64_encode encodes.. | ||
oh, it encodes serialized things | 12:42 | ||
not strings | 12:43 | ||
timotimo | yes | 12:44 | |
that's what i was trying to explain %) | |||
i was saying we store a serialized blob on the string heap | |||
jnthn | Yes, in all .moarvm files, or just a handful? | 12:45 | |
timotimo | i shall see. | 12:46 | |
jnthn | OK. I gotta head to the station fairly soon, but will be online on the train. :) | 12:47 | |
timotimo | cairo has it | ||
HTTP::Server::Async has a null string that it passes to deserialize | 12:48 | ||
same with ::Request | 12:49 | ||
could be about repossession conflicts, actually | |||
SDL2::Raw has a base64 blob | 12:50 | ||
zavolaj has a null string, too | 12:51 | ||
12:54
colomon joined
13:53
ggoebel111111114 joined
14:53
zakharyas joined
15:03
kjs_ joined
15:42
vendethiel joined
15:51
kjs_ joined
16:25
woolfy left
16:30
zakharyas joined
17:52
FROGGS__ joined
18:45
zakharyas joined
20:39
FROGGS__ joined
20:47
vendethiel- joined
|