Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes. Set by lizmat on 24 May 2021. |
|||
00:00
reportable6 left,
nativecallable6 left,
quotable6 left,
sourceable6 left,
notable6 left,
tellable6 left,
releasable6 left,
shareable6 left,
greppable6 left,
bloatable6 left,
ilogger2 left,
harrow left
00:03
ilogger2 joined
00:06
harrow joined
00:09
reportable6 joined
00:46
greppable6 joined,
releasable6 joined
|
|||
vrurg | I have some pretty interesting benchmarking here: github.com/Raku/problem-solving/issues/334 | 01:42 | |
01:46
notable6 joined
01:47
shareable6 joined,
bloatable6 joined
01:48
tellable6 joined,
quotable6 joined
01:54
frost joined
|
|||
timo | giving Cdefault an int32 attribute makes it a little faster even | 01:56 | |
if you replace |c with :$n it's a lot faster than Cdefault | 01:59 | ||
0.723379992 | 0.473043493 | 02:00 | ||
this is with :$n, :$m | |||
Voldenet | it's a bit surprising that `Cnew.new(:$n)` is faster than `Cnew.new(int32 :$n)` | 02:05 | |
though it's `0.634931815 | 0.330936486` vs `0.645507507 | 0.386812083` | 02:07 | ||
not substantial difference | |||
timo | do we have literally SET-SELF(|c) in much of our code? i assume it's the capture that costs the most here | 02:09 | |
Voldenet | from what I see SET-SELF always uses positional args | 02:14 | |
and it consistently beats everything else | 02:18 | ||
timo | named and positional are supposed to have the same performance after spesh | 02:26 | |
japhb | timo: Would that still be true given newdisp? I would expect positional args would be *very* fast in new-disp, especially handed from routine to routine in the same order | 02:37 | |
timo | you mean the thing about |c? | 02:41 | |
/bin/time raku -e 'for ^50_000_000 -> int $_ { my int $a = $_ div 2; $a = $_ div 4; $a = $_ div 8; $a = $_ div 16; $a = $_ div 32; $a = $_ div 64; $a = $_ div 128; $a = $_ div 256 }' | |||
i timed this at 1.25s with my div-to-brshift branch and 4.8s without | |||
japhb: all i know is when i switched the |c out for explicit arguments, it got a whole lot faster | 02:45 | ||
02:48
nativecallable6 joined
|
|||
timo | now imagine the improvement we could get if we take the techniques from libdivide for non-power-of-two divisions and modulus as well | 02:58 | |
though the win won't be as extreme perhaps? | 02:59 | ||
" libdivide's scalar code is up to 16 times faster for powers of 2, 10 times faster for non-powers of 2, compared to naive hardware division." | 03:01 | ||
03:48
evalable6 left,
linkable6 left
03:49
evalable6 joined
03:50
linkable6 joined
03:53
sourceable6 joined
04:53
greppable6 left,
shareable6 left,
committable6 left,
nativecallable6 left,
unicodable6 left,
coverable6 left,
reportable6 left,
quotable6 left,
evalable6 left,
linkable6 left,
benchable6 left,
statisfiable6 left,
bisectable6 left,
releasable6 left,
tellable6 left,
bloatable6 left,
notable6 left
04:54
unicodable6 joined,
reportable6 joined,
releasable6 joined,
coverable6 joined,
benchable6 joined,
evalable6 joined
04:55
bisectable6 joined,
committable6 joined,
greppable6 joined,
quotable6 joined,
notable6 joined
04:56
nativecallable6 joined,
linkable6 joined,
tellable6 joined,
shareable6 joined,
bloatable6 joined,
statisfiable6 joined
05:56
reportable6 left,
sourceable6 left,
releasable6 left,
committable6 left,
unicodable6 left,
notable6 left,
bisectable6 left,
bloatable6 left,
nativecallable6 left,
tellable6 left,
shareable6 left,
benchable6 left,
quotable6 left,
coverable6 left,
greppable6 left,
evalable6 left,
statisfiable6 left,
linkable6 left
05:57
releasable6 joined,
unicodable6 joined,
shareable6 joined,
notable6 joined
05:58
quotable6 joined,
committable6 joined,
bisectable6 joined,
greppable6 joined,
benchable6 joined,
evalable6 joined
05:59
nativecallable6 joined,
linkable6 joined,
bloatable6 joined,
statisfiable6 joined,
sourceable6 joined,
reportable6 joined,
tellable6 joined,
coverable6 joined
06:06
reportable6 left
06:08
reportable6 joined
|
|||
japhb | timo: I was talking about explicit positional args, not captures. | 06:36 | |
I'm actually surprised that brshift is so much faster *at the Raku level*. I honestly would have expected our overhead to hide that. Or maybe brshift makes it all the way down to the JIT? | 06:37 | ||
Nicholas | good *, japhb | 06:40 | |
good *, * | |||
nine | brshift on native integers is JITed indeed | 07:13 | |
Becomes mov rax, WORK[reg_b]; mov cl, byte WORK[reg_c]; sar rax, cl; mov WORK[reg_a], rax; | 07:14 | ||
07:21
[Coke] joined
|
|||
nine | I think the massive difference is not actually in how shifting is faster than dividing in hardware but that even the JITed version of div_i has to check for division by 0 and handle negative divisors | 07:22 | |
07:23
sena_kun joined
07:25
[Coke]_ left
|
|||
Kaiepi | i got sick of not being able to do like | 08:07 | |
LAPTOP-7I9RCT0C% raku -e 'my constant F = Semaphore.new: 42; use nqp; say nqp::unbox_u(F)' | |||
42 | |||
so i'm trying my hand at eliminating libuv from the Semaphore REPR | 08:08 | ||
since it's missing basic features like sem_getvalue | |||
08:29
Kaiepi left
09:29
evalable6 left,
linkable6 left
09:31
linkable6 joined
09:32
evalable6 joined
|
|||
timo | cool | 10:15 | |
10:53
Kaiepi joined
11:06
dogbert2 joined
11:10
dogbert17 left
11:15
frost left
11:19
frost joined
11:50
dogbert2 left
11:53
dogbert11 joined
12:07
reportable6 left
12:09
reportable6 joined
13:53
vrurg_ joined,
vrurg left
14:21
dogbert17 joined,
dogbert11 left
14:26
ismustachio left
15:26
notable6 left,
greppable6 left,
statisfiable6 left,
reportable6 left,
evalable6 left,
quotable6 left,
linkable6 left,
shareable6 left,
coverable6 left,
committable6 left,
tellable6 left,
nativecallable6 left,
bloatable6 left,
benchable6 left,
sourceable6 left,
releasable6 left,
unicodable6 left,
bisectable6 left
15:27
tellable6 joined,
shareable6 joined,
reportable6 joined,
quotable6 joined,
notable6 joined,
coverable6 joined,
bisectable6 joined,
evalable6 joined,
linkable6 joined,
bloatable6 joined
15:28
sourceable6 joined,
greppable6 joined,
committable6 joined,
releasable6 joined,
benchable6 joined,
nativecallable6 joined,
statisfiable6 joined
15:29
unicodable6 joined
15:38
frost left
|
|||
nine | Just noticed that we've got 2 spec test failures with blocking and nodelay: not ok 126 - Accessing non-existing on num32 array dies, not ok 237 - Accessing non-existing on num64 array dies | 16:04 | |
Nicholas | IIRC there are two regular spectest fails on master with blocking and something. But I don't know enough to fix them | 16:06 | |
Geth | MoarVM/fallback_resolver: a6fbcf6b7f | (Stefan Seifert)++ | 12 files Support a fallback resolver when looking for dynamic variables |
16:07 | |
MoarVM/fallback_resolver: 35064bf9a3 | (Stefan Seifert)++ | 7 files Support fallback resolver in getlexouter |
|||
MoarVM/fallback_resolver: c89c3ec898 | (Stefan Seifert)++ | 10 files Support fallback resolver in *getlex* |
|||
16:33
dogbert11 joined
16:35
dogbert17 left
16:50
dogbert11 left
16:52
dogbert11 joined
17:05
dogbert17 joined,
dogbert11 left
18:07
reportable6 left
18:09
reportable6 joined
19:09
linkable6 left,
evalable6 left,
linkable6 joined,
evalable6 joined
19:11
vrurg_ left
19:13
vrurg joined
19:28
sena_kun left
19:29
sena_kun joined
19:36
discord-raku-bot left,
discord-raku-bot joined
19:37
discord-raku-bot left,
discord-raku-bot joined
20:58
sena_kun left
|
|||
vrurg | m: start loop {}; await start { sleep 1; note "OK"; } | 21:43 | |
Something is deeply wrong here. | |||
camelia | (timeout) | ||
vrurg | How come a deep loop in one thread doesn't let complete a promise in another? | 21:44 | |
bisectable6: start loop {}; await start { sleep 1; note "OK"; } | 21:45 | ||
bisectable6 | vrurg, Will bisect the whole range automagically because no endpoints were provided, hang tight | ||
vrurg, Output on all releases: gist.github.com/27fac2aab893f77bbf...8b53efe9f9 | 21:47 | ||
vrurg, Bisecting by exit signal (old=2021.09 new=2021.10). Old exit signal: 0 (None) | 21:48 | ||
vrurg, bisect log: gist.github.com/732f506a6fe9c2f134...95a96eced2 | 21:52 | ||
vrurg, Output on all releases and bisected commits: gist.github.com/dc566bbda2ecb568b8...c783cfcd7a | |||
vrurg | bisectable6: good=2021.09 bad=2021.10 start loop {}; await start { sleep 1; note "OK"; } | 21:57 | |
bisectable6 | vrurg, Bisecting by exit signal (old=2021.09 new=2021.10). Old exit signal: 0 (None) | ||
21:58
evalable6 left,
linkable6 left
21:59
linkable6 joined
22:01
evalable6 joined
|
|||
bisectable6 | vrurg, bisect log: gist.github.com/7716535955e01b2a43...20eb592ddc | 22:02 | |
vrurg, There are 224 candidates for the first “new” revision. See the log for more details | |||
23:01
linkable6 left,
evalable6 left
23:03
evalable6 joined
23:04
linkable6 joined
|