02:03
colomon joined
03:02
MadcapJake` joined
|
|||
ugexe | i opened a PR to the distribution proposals ive been going on about | 04:14 | |
[Tux] | test 22.106 | 06:23 | |
test-t 12.376 | |||
csv-parser 25.764 | |||
lizmat | And finally, another Perl 6 Weekly hits the net: p6weekly.wordpress.com/2016/03/29/...heapsters/ | 08:34 | |
08:35
RabidGravy joined
|
|||
lizmat hopes jnthn liked the reference | 10:25 | ||
jnthn | lizmat++ | 10:26 | |
It started out as a pun on "happy easter" and then took on a life of its own :P | 10:27 | ||
lizmat | I'm not sure whether people got that I was referring to the CLI of the heap inspection tool | 10:28 | |
10:54
colomon joined
|
|||
dalek | kudo/nom: a424f07 | lizmat++ | src/core/Order.pm: Make Object:D cmp Object:D 2x as fast The basic version was testing for Inf/-Inf. By adding candidates for Real/Any and Any/Real and moving the test for Inf/-Inf in there, we no longer need to do that in the basic version. Also added a very cheap test for identity, so comparing with itself should be a lot faster as well. Also nqpified the ORDER helper sub, just in case it would make a difference. |
11:15 | |
lizmat | sometimes I think we should make sort() an iterator as well | 11:18 | |
with the push-all case using the current sort | 11:19 | ||
and the pull-one case using an algorithm based on min | |||
jnthn | That'd accidentally n**2 things if you did for @foo.sort { }, no? | 11:20 | |
lizmat | so that if you're only interested in the top 5 of a 10000 list, it would only "sort" 5 elements | ||
jnthn: depends on where you would store the result | 11:21 | ||
my @a = @foo.sort | |||
jnthn | imho it's algorithmically different enough that it'd want a different method name | ||
lizmat | would use the push-all, so current algortithm | ||
jnthn | Right, for the `for` loop wouldn't | ||
lizmat | true | ||
jnthn | And for %h.sort(-*.value) { } is pretty common | ||
lizmat | perhaps .top :-) | 11:22 | |
for @scores.top(5) { } | |||
lizmat stops with wandering thoughts :-) | 11:23 | ||
nine | Well if the iterator returned by .sort had a .top method, it would know which way to choose. | 11:25 | |
jnthn | @foo.top(5) reads pretty nice... | ||
I guess .head(5, :by(...)) is another option... | |||
Then you'd get naturally end up with .tail(5, :by(...)) too | 11:26 | ||
nine | +1 for new .head and .tail candidates | 11:27 | |
Having .head and .first is already confusing enough. Adding .top wouldn't help there at all :) | |||
jnthn | Yeah :) | 11:28 | |
lizmat | we don't have any native binary chop function, right ? | 11:29 | |
s/native/builtin/ | |||
nine | jnthn: my "Code ref '' does not exist in serialization context" error is about this one: github.com/rakudo/rakudo/blob/nom/....nqp#L2008 | 11:31 | |
jnthn: any idea how this can happen when in line 2021 we call add_root_code_ref? | 11:32 | ||
jnthn | nine: I'm assuming EVAL now shares the parent SC? | 11:34 | |
(In the context you're fixing...) | |||
nine | yes | ||
jnthn | And you share the root code refs I guess? | 11:36 | |
I wonder if it's something to do with the fact that compilation causes fixups of the stubs to the real thing | 11:37 | ||
And then it gets confused because we added the stub into the root set but didn't update it with the real thing later | |||
Which is what github.com/rakudo/rakudo/blob/nom/....nqp#L2332 takes care of for the compile_in_context case | 11:38 | ||
But maybe isn't happening in the code-path you're taking? | |||
nine | I'll have a look when I'm at home. | 11:39 | |
I've tried sharing everything but @!fixup_tasks and @!load_dependency_tasks as those would trigger the unwanted serialization | 11:40 | ||
Oh and of course $!precomp_mode which I set to 0 for compile time EVALs | |||
jnthn | *nod* | 11:41 | |
Yeah, the symptoms fit pretty well with what I described then. | |||
nine | So it's good that I asked, because the chance of me discovering this by myself was close to 0 :) | 11:43 | |
12:33
|Tux| joined
12:57
Skarsnik joined
13:14
RabidGravy joined
|
|||
dalek | kudo/nom: 330f814 | lizmat++ | tools/build/makeMAGIC_INC_DEC.pl6: Some more WIP on magic inc/dec opts |
13:35 | |
13:52
skids joined
14:21
colomon joined
16:23
vendethiel- joined
17:03
vendethiel joined
17:06
Hotkeys_ joined
17:07
sortiz_ joined
17:08
timotimo joined
17:17
vendethiel- joined
18:16
FROGGS joined
18:32
AlexDaniel joined
20:06
Ven joined
|
|||
timotimo | jnthn: should i invest any time into a "only keep the latest heap snapshot" flag? (env var or something) | 20:23 | |
because long-running processes are impossible to heap-analyze, as the memory usage rises constantly and so does the time for a gen2 collection, AFAICT | |||
jnthn | I don't think so | 20:38 | |
I think we'll want to solve that with some vm-exposes-a-socket approach later | 20:39 | ||
timotimo | so you can "vacuum up" results at any time and make older snapshots disappear from the gen2? | ||
jnthn | don't understand the gen2 thing | 20:41 | |
We don't store snapshots in gen2 | 20:42 | ||
We only do any gen2 allocations right at the end to get the results back into VM space | |||
Which you'd not need to do if you were shoving them off over a socket. | |||
Though we might also consider writing that server in NQP or even Perl 6, and having it run in a seprate MoarVM instance in the same process :) | 20:45 | ||
nine | jnthn: very weird. The stub in question is never executed and thus never replaced by the real thing. Also note that the EVAL actually compiles and executes successfully. It's the outermost comp unit that fails (A.pm in A uses B uses C). | 20:48 | |
20:50
Ven joined
|
|||
timotimo | oh, ok | 21:12 | |
i must have been wrong, then. it looked like memory usage was growing rather rapidly and every new snapshot take was taking longer and longer, so i assumed something about the heap profiler wasn't scaling well. must have been the program, instead | |||
jnthn | timotimo: Um, actualy program memory use will, but the GC'd heap size won't, if that makes sense :) | 21:14 | |
*actual | |||
nine: But...we replace all the things in fixup? | |||
timotimo | next step for me will be a "more" command for the heapanalyzer shell | 22:04 | |
now it's implemented :) | 22:39 | ||
it doesn't handle "there weren't any more results" very well, but oh well :) | |||
23:27
skids joined
|