Parrot 3.3.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Please fix master branch after github.com/parrot/parrot/commit/2953196d6c
Set by moderator on 7 May 2011.
bacek_at_work ~~ 00:00
whiteknight msg pmichaud I suspect bacek's patch doesn't extend to x86_64. Can you try gist.github.com/961822 to see if it helps on your machine?
bacek_at_work is really sad looking at benchmarks...
aloha OK. I'll deliver the message.
whiteknight bacek_at_work: don't worry, we'll fix them
bacek_at_work whiteknight, we do have PTR_SIZE defined. You can use it instead of sizeof(). 00:02
whiteknight oh, I didn't know that. We can fix that patch before we commit it
bacek_at_work Something like #if PTR_SIZE == 4\\n#define INVALID_PTR_MASK 3\\n#else if PTR_SIZE == 8\\n #define INVALID_SIZE_MASK = 7\\n#else #define INVALID_PTR_MASK = 0\\n #endif 00:03
whiteknight yeah, that would be better 00:04
in either case, this should help pmichaud
bacek_at_work I hope so.
whiteknight I can't think of any other big reason for big performance regressions since 3.0 00:05
bacek_at_work: how did you even figure out that function was the cause of the slowdowns? 00:08
plobsing whiteknight: why use preprocessor conditionals. why not (sizeof (void *) - 1)?
whiteknight plobsing: because shut-up. That's why. 00:09
I don't know. I didn't think about it :)
benabik plobsing: Preprocessor conditionals are run once at compile time. sizeof() is run every time the function is called.
plobsing benabik: not true. it is a compiler builtin
whiteknight benabik: the optimizer should deal with that no problem
plobsing: yeah, there are definitely better ways to do it. I don't have my programming cap on right now 00:10
benabik Buh. Head in other project... Compiler _should_ collapse a constant expression, yes. 00:11
whiteknight benabik: just because *our* compilers don't usually do that doesn't mean most real compilers don't
benabik: something something something your gsoc project something something something 00:12
benabik whiteknight: I had been following the backlog but not thinking about constant collapsing when I typed.
whiteknight: And, IMHO, constant collapsing should be handled before you hit my GSoC work. 00:14
whiteknight: Although a set of common passes for tree-optimization _would_ be nice.
whiteknight benabik: we do have a tree optimizations project that was done for GSoC last year. You might want to dust that off and see if it still works 00:15
good practice for dealing with PAST/PST
POST
benabik whiteknight: Hm, yes... Making sure that works on nqp_pct might be nice.
whiteknight: Am hampered by the fact that tree-optimization is just a framework for optimizers and not actually a library of optimizers. 00:16
benabik adds another "would be nice" task to his pile.
whiteknight benabik: I think there were a few basic optimizations in there
benabik: you should tree tree-optimizations as if it's just a standard step in the compilation process. that's how most compilers will probably do it 00:17
even if the number of optimizations a compiler uses might be small by default
NotFound Constant collapsing is not rockey science, even winxed does it ;)
benabik whiteknight: Yes, the compiler object should get a PAST tree from the actions, pass it into tree-optimizer and then use to_pbc to it. It's probably not appropriate to mangle the given PAST tree in PAST::Compiler though. 00:18
TimToady I tend to disapprove of constant collapsing done by an interpreter other than the one that would be used if the constants weren't collapsed, since it's easy to get out-of-sync type and language errors... 00:19
so I'd prefer a pass that merely told me that a bit of code was constant, and then run it like it's real code 00:20
whiteknight TimToady: Each compiler will pick which optimizations to use, if any
the functionality to run any optimizations should be built-in, whether the compiler uses any or not 00:21
I just want to make sure that during the GSoC work, the capability doesn't get neglected
NotFound Winxed evaluates at compile time some builtins when used with constant arguments. That may be hard at any level lower than the interpreter. 00:22
I mean, the compiler. 00:23
whiteknight integer and float constants are no-brainers to optimize. Strings too, since they're immutable
pmcs are harder. You really can't constant-fold them in any portable, meaningful way
TimToady the more polymorphic your dispatch is, the less you can rely on anyone else to figure out which operator they should really be folded via
whiteknight especially if HLLs can arbitrarily map in new types for the built-ins
TimToady or however you say that in English... 00:24
whiteknight TimToady: true. Compiler authors are going to have to do a lot of work to determine which optimizations they want to use, and even to write their own custom passes
TimToady mostly they need the capability of migrating atributes up and down the tree, like "is pure enough to constant fold" 00:25
00:25 benabik left
NotFound whiteknight: so it may be easier to do it in the compiler. 00:25
whiteknight NotFound: right. Parrot doesn't do the optimizations. Parrot only provides the tools for other people to do them
TimToady: being able to determine attribute purity is well outside the scope of Parrot 00:28
but, PAST having a flag that says "this is pure", and letting the compiler set and read that flag is something we could do
NotFound What is "pure"? 00:35
bacek_at_work whiteknight, (how I found) it was only possible place which can explain such a big difference between runs. 00:37
00:47 lucian left 00:55 jrtayloriv left 01:04 whiteknight left
pmichaud 00:00 <whiteknight> msg pmichaud I suspect bacek's patch doesn't extend to x86_64. 01:22
well.... since it improves things on x86_64, it must "extend to it", yes? Or am I misunderstanding the statement? 01:23
I mean, compare the rakudo-2011.04 and rakudo-2011.04-p1 times
bacek_at_work pmichaud, can you try whiteknight++ patch on github? 01:25
It should improve amd64 performance
pmichaud instead of or in addition to the patch received via email?
bacek_at_work addition
pmichaud okay 01:26
should I just compare the two versions, or should I also include 2011.04 and 2011.01 ?
(the two patched versions)
01:26 cotto left
bacek_at_work just compare with -p1 01:28
it will give good indication of performance
pmichaud will have results in about 60 mins 01:29
(have a few other errands to do here)
my new desktop is nice and fast :)
bacek_at_work :) 01:30
pmichaud pmichaud@kiwi:/zip/perl/rakudo-2011.04-p2/parrot$ patch -p1 <is_ptr_2.patch
patching file src/gc/gc_gms.c
Hunk #1 FAILED at 1520.
1 out of 1 hunk FAILED -- saving rejects to file src/gc/gc_gms.c.rej
pmichaud@kiwi:/zip/perl/rakudo-2011.04-p2/parrot$
;(
patch wants 01:32
+ const size_t invalid_ptr_mask = sizeof(void*) == 8 ? 7 : 3;
gc_gms.c has
size_t i;
I'd prefer not to guess at this point, so I'll wait for an updated patch. 01:33
bacek_at_work Are you applying it to 3.0+patch or master? 01:34
pmichaud 3.3+patch
3.3+is_ptr.patch 01:35
bacek_at_work oops. 3.3
pmichaud definitely not master
bacek_at_work ok. I'll try to create new patch.
pmichaud I'm only working from releases at this point.
I can benchmark master, too, if need be.
this new benchmark harness+suite is making it much easier to run tests like this :) 01:36
(I can patch either 3.3+first patch or an unpatched 3.3.... whichever is easiest for you :) 01:37
afk, errands
01:46 woosley joined 01:50 rurban_ joined 01:52 rurban left, rurban_ is now known as rurban
bacek_at_work msg pmichaud gist.github.com/961919 on top of is_ptr.patch 02:02
aloha OK. I'll deliver the message.
luben pmichaud, in master I have tweeked gc default params, so you could benchmark it, the tweeks give some 5-10% speedup on core.pm on my systems 02:03
02:15 benabik joined 02:24 woosley left
pmichaud running benchmarks for -p1 and -p2 now 02:41
while waiting for that... here's the same set of benchmark runs as earlier but run from my notebook: gist.github.com/961962 02:48
02:49 woosley joined
pmichaud I'm also running the benchmarks on my old desktop... but it probably won't be finished with them until tomorrow morning (another 12 hours from now) 02:53
oh, should only be about eight hours :) 02:56
gist.github.com/961995 # no significant difference between -p1 and -p2 for core.pm 03:15
(still waiting for other tests to complete)
n@cpe-74-65-60-43.rochester.res.rr.com] has joined #parrot 03:29
oops
gist.github.com/962008 # results of -p1 versus -p2 for first sets of tests 03:30
the system is still running the .p6 and spectests.... but so far there's no significant difference between -p1 and -p2
afk for a while 03:31
bacek_at_work msg pmichaud can you also test 2011.01 on kiwi? Or 2011.04-p2 on plum? 03:42
aloha OK. I'll deliver the message.
03:45 hudnix left 03:51 bubaflub left
pmichaud bacek_at_work: 2011.01 on kiwi should be the same numbers I posted earlier 04:29
I can re-test if you like
ore.pm: rakudo-2011.01 (ms2) 64.2 65.9 65.9 64.3 64.2 100.0% 04:30
04:44 soh_cah_toa left
pmichaud here's what I have so far: 04:44
gist.github.com/961736 # kiwi, releases 2011.01 through 2011.04-p1-ms2 04:45
gist.github.com/962060 # kiwi, 2011.04-p1 vs 2011.04-p2
gist.github.com/961962 # plum, releases 2011.01 through 2011.04-p1-ms2
I'm currently running 2011.01, 2011.04-p1 and 2011.04-p2 on plum
I'll also re-run those builds on kiwi
04:48 bluescreen_ left, bluescreen left, bluescreen__ left
bacek_at_work pmichaud++ # benchmarking! 04:51
05:00 ShaneC joined
pmichaud core.pm results for 2011.01, 2011.04-p1, and 2011.04-p2, on kiwi: 05:13
core.pm: rakudo-2011.01 (ms2) 66.6 67.0 65.5 65.6 65.5 100.0% rakudo-2011.04-p1 (gms) 68.3 68.4 68.3 68.6 68.3 104.3% rakudo-2011.04-p2 (gms) 68.3 68.5 68.5 68.1 68.1 104.0%
oops
that didn't format well 05:14
05:14 ShaneC left
pmichaud anyway, I'll let the rest of the bench marks run and post when I wake up from sleep 05:14
afk, sleep
05:38 theory left 05:57 jsut joined 06:02 jsut_ left 06:17 birdwindupbird joined 06:51 fperrad joined 06:53 cotto joined
cotto ~~ 06:54
tadzik o/
07:02 mj41 joined
moritz \\o 07:06
bacek_at_work /o 07:11
07:15 baest_ is now known as baest
dalek rrot: b788633 | dukeleto++ | NEWS:
Add a NEWS item
07:24
dukeleto why do Capture PMC's exist? 07:29
moritz because Match objects are captures 07:30
and that makes nqp-rx much faster than doing it in PIR
(and historic reasons, I think they used to be used for argument passing, or something)
dalek rrot/leto/embed_grant: 3d00eba | dukeleto++ | t/src/extend_vtable.t:
Properly destroy more PMCs at the end of tests
07:47
dukeleto moritz: yes, they seem to be a historical accretion
moritz++ for the explanation 07:48
moritz dukeleto: I think it might work out to move captures to nqp-rx/nqp 07:49
07:50 particle joined 07:51 dod joined
dukeleto moritz: not a bad idea 07:56
moritz ... under the assumption that the Capture dynpmc from nqp and nqp-rx don't conflict 07:57
migth be a matter of a small rename
or maybe nqp wants to go without Capture in the long run, and use a 6model capture (any opinions jnthn__?) 07:58
dalek rrot/leto/embed_grant: 621bb56 | dukeleto++ | t/src/extend_vtable.t:
[t] Parrot_PMC_getprop
07:59
jnthn__ moritz: nqp nor nqp-rx has never had a Capture PMC of its own - it uses teh Parrot one in nqp-rx. 08:11
And in nqp we don't use it because it's (memory-wise) cheaper not to do so with 6model. 08:12
Capture is used by PAST also
moritz jnthn__: the idea was to move it to nqp-rx, but if PAST uses it, that might not be an option 08:13
jnthn__ yeah, I think PAST using it will kill that plan.
Also nqp-rx has never had dynpmcs
moritz right, the idea was "zero runtime" 08:14
jnthn__ exactly 08:15
moritz or "parrot is my runtime" ( /me wants PIMR t-shirts :-) 08:16
Tene aloha: tell whiteknight that I've started drafting my second attempt at ruby object model on 6model 08:24
aloha is our msg bot, right? 08:25
aloha Tene: Dunno.
sorear aloha: msg Tene test
aloha sorear: OK. I'll deliver the message.
moritz Tene: yes, s/tell/msg/
Tene aloha: msg whiteknight that I've started drafting my second attempt at ruby object model on 6model
aloha Tene: OK. I'll deliver the message.
jnthn__ Tene: yay :) 08:45
08:51 contingencyplan left 08:55 dafrito left 09:05 SHODAN joined 09:06 dduncan joined, dduncan left 09:13 woosley left
bacek ~ 09:27
~~
~~~
aloha, help 09:28
aloha bacek: Ask me for help about: msg, convert, status, vars, karma, insult, auth, seen, maths, infobot, clock, translate, loader (say 'help <modulename>').
bacek aloha, help msg
aloha bacek: msg <nick> [that] <message>
bacek Tene, ^^^^
09:44 ShaneC joined 09:50 rurban_ joined 09:51 woosley joined 09:52 rurban left, rurban_ is now known as rurban 10:09 ambs joined 10:11 ShaneC1 joined 10:13 ShaneC left
dalek rrot: ef5ece1 | bacek++ | src/gc/gc_gms.c:
Fix very-very subtile bug with handling of GMS "dirty_list".

It should fix tickets #2105 and other GC related bugs.
10:25
10:27 preflex left 10:30 preflex joined 10:53 dod left 11:06 dod joined 11:09 Psyche^ joined, Psyche^ is now known as Patterner
dalek rrot: 8e129a0 | bacek++ | include/parrot/pobj.h:
[cage] Remove unused PObj flag
11:24
11:37 lucian joined 11:38 SHODAN left
pmichaud good morning, #parrot 11:52
moritz \\o pmichaud 11:53
11:53 lucian left
pmichaud gist.github.com/962397 # kiwi, 2011.01, 2011.04-p1 and 2011.04.p2 11:54
gist.github.com/962400 # plum, 2011.01, 2011.04-p1 and 2011.04.p2 11:55
gist.github.com/962403 # orange, 2011.01 through 2011.04-p1-ms2 11:56
11:59 bluescreen joined
jnthn__ o/ pmichaud 11:59
bacek aloha, pmichaud 12:00
pmichaud bacek: benchmark results ^^^ 12:01
bacek pmichaud, looking right now
pmichaud, erm... Looks like ms2 wins only on 8G of memory. Interesting. 12:03
pmichaud ...? 12:04
to me, ms2 never "wins"
12:05 lucian joined
bacek pmichaud, check kiwi stats. It's considerably faster on ms2 vs gms 12:05
pmichaud slower 12:06
bacek mmm....
erm...
gms is slower. Or I misunderstand almost everything
pmichaud you're misunderstanding, yes.
2011.01 with ms2 is faster than 2011.04 with gms, yes. 12:07
but 2011.04 with ms2 is very much slower than 2011.04 with gms
bacek It is what I'm talking about :)
pmichaud the difference isn't between ms2 and gms, but between 2011.01 and 2011.04 12:08
bacek ms2 in 04 is different to ms2 in 01.
so
let's only compare ms2(01) vs gms(04+) :)
moritz it would be useful to find out which non-GC part have made parrot slower 12:09
bacek moritz, it will. One step at the time 12:10
moritz sure 12:11
plobsing moritz: that would require profiling. we either need a suitably fast testcase or a very powerful machine.
bacek pmichaud, "rx" test.
moritz or bisecting (assuming it can be attributed to one or just a hand ful of commits)
bacek Do I understand correctly that it's actually "GC heavy" test? 12:12
moritz is there any test that's not GC heavy?
pmichaud bacek: yes... it's heavy gc similar to how core.pm is a gc heavy test
moritz I mean if invocations allocate objects... 12:13
pmichaud the rx test is a bunch of pattern matches... also, it's the test that has the most regular expressions to parse
bacek pmichaud, yes. But "rx" is always faster than "core.pm". Which can indicate that we are actually loosing a lot of time somewhere else. 12:14
pmichaud right
I've been saying that I don't think gc is the primary slowdown culprit here
I think that gc improvements have just been masking other slowdowns 12:15
bacek Agreed. But I think we can make GC faster anyway.
jnthn__ bacek: If you have ms2, do the write barriers have any overhead/do anything?
moritz they are #define'd out at preprocessor time 12:16
jnthn__ OK.
pmichaud jnthn__: I'm wondering if the write barriers are the prime reason for the slowdown at 2011.02
jnthn__ pmichaud: Right, thus my question. :)
bacek jnthn__, one comparison in most cases.
moritz at least that's what the original plan was
bacek #define PARROT_GC_WRITE_BARRIER(i, p) do { if (PObj_GC_need_write_barrier_TEST((p))) Parrot_gc_write_barrier((i), (p)); } while(0)
pmichaud it would be good to know at which point "ms2" changed from 2011.01 to 2011.04 12:17
bacek single flag test. Shouldn't be too heavy.
pmichaud slightly off-topic: would it be better to put the log files in the rakbench repo as compressed or uncomressed files? 12:20
bacek let me quick check 02 with WB defined out
pmichaud uncompress: 2.6MB, compressed: 100K
moritz uncompressed 12:21
ie "don't bother, it's not too large"
bacek msg luben Can you make CLI "nursery collection percentage" float, not int? It will help with benchmarking (or fine tuning) 12:24
aloha OK. I'll deliver the message.
12:25 hudnix joined
bacek pmichaud, ms2-02 is considerably slower on my box even without WBs. 12:25
111s vs 212s 12:26
12:26 lucian left
pmichaud bacek: so, sounds like something else hit Parrot between 2011.01 and 2011.02 12:26
bacek 111s for current master
pmichaud, I think so, but would like to have "independent validation". 12:27
It's in include/parrot/gc_api.h. If you can replace #define PARROT_GC_WRITE_BARRIER with empty definition and rerun "core.pm" test on kiwi it will be helpful. 12:28
pmichaud you want me to do the change on 2011.02 ? 12:30
bacek yes 12:31
moritz is 2011.01 parrot 3.0.0 ?
pmichaud moritz: yes
(that's the /3.0 in 2011.01/3.0 :-) 12:32
moritz I'll do some nqp-rx benchmarking on 3.0.0 vs. 3.1.0
pmichaud moritz: good idea. I was thinking of adding some nqp-rx benchmarks to the suite also 12:33
moritz nqp-rx didn't bump PARROT_REVISION for ages, for which I'm rather grateful right now :-)
it still has 2.9.1 or something as dependency 12:34
pmichaud bacek: what builds would you like me to compare against 2011.02-nwb (no write barrier) 12:35
?
2011.01, yes.
bacek indeed
pmichaud any others?
bacek 2011.02
(original one)
pmichaud just the core.pm and rx tests, or all tests?
bacek I think core.pm and rx will be enough for now. 12:36
pmichaud okay
bacek I just need indication that WBs aren't responsible for such slowdown.
12:41 whiteknight joined
moritz timings for running the 01-regex.t tests in nqp-rx on parrot 3.0.0: 11.789 +- 0.208 on parrot 3.1.0: 12.938 +- 0.041 12:48
bacek moritz, amd64? 12:49
pmichaud gist.github.com/962458 # trial 1, 2011.01 vs 2011.02 vs 2011.02-nwb
moritz bacek: tes
bacek: erm, yes 12:50
bacek pmichaud, so yes. WBs aren't responsible by it self.
whiteknight pmichaud: did you try the quick patch I made last night? 12:51
pmichaud moritz: maybe try timing p6regex-test, if you can?
p6regex-test is closer to rx
bacek whiteknight, didn't help much...
moritz pmichaud: p6regex-test = 01-regex.t + harness 12:52
whiteknight bacek: did it help at all?
moritz pmichaud: so that's essentially what I did
pmichaud moritz: okay
moritz: thanks
moritz pmichaud: you're welcome
bacek whiteknight, not really.
moritz I'll run it a few more times, to get some statistical significance
whiteknight okay, it was just a shot in the dark
pmichaud 11:54 <pmichaud> gist.github.com/962397 # kiwi, 2011.01, 2011.04-p1 and 2011.04.p2
11:55 <pmichaud> gist.github.com/962400 # plum, 2011.01, 2011.04-p1 and 2011.04.p2
whiteknight: ^^^ 12:53
2011.04-p2 is with the additional patch
whiteknight okay, yeah. No improvement
at least it's no worse :)
atrodo (low standards)++ 12:54
whiteknight msg Tene I'm glad to hear that. Let me know if you have anything online I can see, or any notes you can send. I'm very interested to see anything
aloha OK. I'll deliver the message.
whiteknight bacek++ # the subtle GMS fix for darwin 12:58
bacek whiteknight, it wasn't darwin specific. But it was really hard to catch. 12:59
pmichaud gist.github.com/962472 # trials 1+2, 2011.01 vs 2011.02 vs 2011.02-nwb
gist.github.com/962476 # patch used to empty-define PARROT_GC_WRITE_BARRIER 13:00
I'm afk for a bit 13:01
coke_ rohit?
seen rohit.nsit08? 13:02
aloha Sorry, I haven't seen rohit.nsit08.
coke_ seen rohit_nsit08?
aloha rohit_nsit08 was last seen in #parrot 3 days 20 hours ago joining the channel.
coke_ rohit is rohit_nsit08
moritz nqp-rx on parrot 3.0.0: (11.730 +- 0.323)s 13:05
nqp-rx on parrot 3.0.0: (12.929 +- 0.047)s
now with 15 runs each
sorry, second line is 3.1.0 13:06
that's a difference of 3.2 standard deviations 13:07
so the chance that this is all stasticial flucations is < 0.1%
jnthn__ Statistical methods. You knows them. 13:09
moritz at least I pretend to :-)
dalek rrot: 19962bf | bacek++ | / (2 files):
[gc] Avoid second scan of C stack for soling fresh root objects. It should improve GC performance a bit.
13:12
bacek s/solin/soiling/ 13:13
coke_ whiteknight: hasty last minute meeting with rohit scheduled for 9am eastern. APparently too last minute. his exams are... "preponed" and will be hitting earlier than originally scheduled. Sooner to start coding, but this week is now very hectic for him. 13:17
whiteknight it's good to get exams over earlier, and start coding sooner 13:20
coke_ I look forward to having a scheduled time to meet on the calendar. ;) 13:23
bacek ok, guys.
coke_ second time I've picked a time after he's already gone to sleep.
bacek It's getting dark and cold here. I'll try to hide under the blanket for a while. 13:24
moritz just drags tadzik into #phasers
'night bacek
tadzik now?
moritz tadzik: no, generally for gsoc meetings
tadzik oh, I see
bacek msg pmichaud if you can retest 01 vs 04-bleeding-edge on kiwi it will be really helpful. 13:25
aloha OK. I'll deliver the message.
moritz tadzik: sorry, wasn't very clear :-)
tadzik no, I just wasn't paying attention :) Your sentence was the first one on the stack :)
13:31 birdwindupbird left
whiteknight seen cgaertner 13:38
aloha cgaertner was last seen in #parrot 36 days 23 hours ago saying "btw, who would be willing to mentor the project? the proposal template ask for that information, I I don't remeber anyone actually mentioning that...".
13:40 bubaflub joined 13:57 rohit_nsit08 joined
rohit_nsit08 hello #parrot 13:57
coke_: ping
whiteknight good morning rohit_nsit08
rohit_nsit08: I'm going to be your backup mentor this summer
I don't know if Coke told you
rohit_nsit08 whiteknight: hello, good morning, yah read the mail, I'm happy :-) . 13:58
whiteknight: my university exams have now preponed and the new dates are from 12 to 26 of may instead of 16 to 31st so i
I'll be able to start work earlier but now I'll have to study for exams 13:59
whiteknight that's good. Less time to study, but more time to write code!
rohit_nsit08 I informed coke_ about this change
whiteknight yes, we talked this morning
14:00 bacek_at_work left
rohit_nsit08 whiteknight: okay, I'll see if i get some time in between the exams, and mail you and coke_ about the doubts if any. 14:01
14:04 aloha left 14:06 birdwindupbird joined, aloha joined 14:10 bacek_at_work joined 14:13 ambs_ joined 14:14 ambs left, ambs_ is now known as ambs 14:22 darbelo joined 14:36 contingencyplan joined
dalek rrot: 6832e5f | luben++ | / (4 files):
use float for --gc-nursery-size
14:37
ttbot Parrot 6832e5fa MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/1188 14:46
14:57 atrodo_ joined 14:58 atrodo left, atrodo_ is now known as atrodo, atrodo is now known as atrodo_, atrodo_ is now known as atrodo
dalek rrot: 75fe3b2 | mikehh++ | frontend/parrot/main.c:
fix incorrect ASSERT_ARGS
15:14
15:21 hercynium joined
ttbot Parrot 75fe3b2f MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/1208 15:22
mikehh strtof does not seem to be in the includes for windows build 15:26
whiteknight windows fail
I'll fire up the build on my win64 box soon to see what happens
mikehh line #679 of frontend/parrot/main.c 15:27
whiteknight oh, luben would have just changed that in his recent commit 15:29
okay
mikehh builds fine for me on Ubuntu 11.04 amd64
whiteknight mikehh: Can you change "strtof" to "(float)strtod"? I think that should fix the windows build 15:30
NotFound strtof is not ansi C, use strtod
whiteknight I can't test it here for a while
mikehh whiteknight: can do
whiteknight mikehh++
at the very least it shouldn't break anything on linux, and might just make the bot shut up about windows 15:31
15:31 woosley left
plobsing (float)strtod defeats the purpose. the intent was to expose fractional values for GC tuning parameters (a feature requested by bacek). we were previously using strtod 15:33
NotFound ? 15:34
What's the problem with fractional values and strtod?
whiteknight strtod would still be giving us doubles
plobsing oops. wow, disregard. need to focus on one thing at a time
whiteknight :)
plobsing back to $work
NotFound ETOOMUCHSTRTOx 15:35
whiteknight ETOOMUCHLIBC
atrodo libc-- 15:36
c--
whiteknight if this were 1970, libc would be the undisputed king of libraries. Now, it isn't allowed to be nominated
dalek rrot: 5881c3c | mikehh++ | frontend/parrot/main.c:
attempt to fix windows build
15:36 woosley joined
whiteknight actually, that's a lie. In 1970 there were probably better libraries out there 15:36
atrodo I'm waiting for someone to chime in and say lisp 15:37
NotFound Probably, but C ran in machines where compilers with better libraries didn't fit. 15:38
whiteknight (nobody-should (mention (lisp))) 15:39
I hates me some S-expressions
Apparently Super Mario 64 was written in Lisp 15:40
atrodo Link?
NotFound atrodo: no, Link is in other game. 15:41
atrodo NotFound++
whiteknight www.franz.com/success/customer_apps...imen.lhtml 15:43
maybe it wasn't written in lisp itself. either way, something something lisp
atrodo whiteknight> That's what i found
I normally find marketing materials suspect
whiteknight yeah 15:48
benabik ~~ 15:49
15:49 davidfetter joined
atrodo Especially since that's the only real reference i can find and the company that was supposedly at the core of the whole thing, Nichimen Graphics, has very little info about them 15:50
15:50 theory joined
whiteknight okay, so the only cool thing I can point to that I think involved lisp might be an exaggeration or an outright lie 15:51
awesomeness
I read a blog a few days back where the guy suggested lisp's poor showing was because it was too flexible, and everybody wrote their own extensions and stuff, and nobody built good reusable libraries 15:54
I don't know enough about the language community, but it sounded plausible
moritz some people like emacs
a language really needs a killer app 15:55
atrodo whiteknight> coding.derkeiler.com/Archive/Lisp/c...01698.html # Thread on comp.lang.lisp. An exaggeration at worse
moritz without rails, ruby would be largely unknown today
or at least largly unused :-)
atrodo Without perl, Perl would be largely unknown today as well :)
16:05 woosley left
dalek nxed: r990 | NotFound++ | trunk/winxedst1.winxed:
minimal refactor of MemberExpr emiters
16:05
16:23 mj41 left
coke_ msg rohit_nsit08 looks like you showed up an hour later than I expected. Just to confirm, NY/Eastern time is currently 4 off UTC by my clock. 16:37
aloha OK. I'll deliver the message.
whiteknight timezones are the worst 16:38
coke_ blames DST more. 16:39
coke_ would be happy if the whole world just used UTC with no DST.
whiteknight I would far prefer that in a number of ways
benabik coke_: US/Eastern is currently EDT/UTC-4. 16:40
whiteknight the only time I've ever seen a use for timezones is on new years eve, so people don't start kissing before midnight
coke_ benabik: ... "that's what I said"
(but thanks for confirming it's not just me.)
benabik coke_: You were looking for confirmation... Although not from me, I guess. :-) 16:41
whiteknight no other day of the year does it matter that 8 AM for me "looks" like 8 AM in singapore
Tene whiteknight: my problems with ruby 6model stuff earlier was that I didn't have a coherent model for what I was trying to do, what was handled by which parts, etc. 16:42
I was trying to use get_how for two different things in different places, but not consistently. 16:43
whiteknight: so, approximately, I need to implement ruby-doc.org/core/classes/Module.html with 6model, along with the smaller Class and Object, glue them together like www.hokstad.com/static/rom/rom.png 16:45
github.com/ruby/ruby/raw/trunk/doc...lasses.png is the version in the ruby source tree
that's the core metacircular loop in the ruby class hierarchy
So, that should be fairly simple and straightforward. 16:46
My other problem last time was that I was mixing levels and trying to have a separate implementation of things living outside the ruby class hierarchy, but I wasn't doing that explicitly, so I was kind of halfway between 16:47
when I really needed to just buy in completely. 16:48
16:54 mj41 joined
whiteknight Tene: okay, that makes sense 17:00
I need to start reading all those links! 17:01
17:03 ShaneC1 left
Tene Which links? 17:04
17:08 darbelo left 17:09 benabik left
whiteknight Tene: those links you just posted 17:11
well, only one of them isn't a picture 17:12
so that's the one I will read
17:13 rohit_nsit08 left 17:22 darbelo joined
Tene Eh, it's just the API docs for the Module class. The summary is "Implement Ruby's object model directly, using Ruby's normal API" 17:22
If you want to learn about Ruby's object model, my recommendation is www.slideshare.net/burkelibbey/ruby...ther-magic 17:23
17:23 ShaneC joined
whiteknight okay, then I will read that too 17:24
I read a lot
Tene I don't know where your interests fall between 6model and ruby's object model 17:25
jnthn__ "Implement Ruby's object model directly, using Ruby's normal API" - sounds like the Right Thing. :) 17:26
whiteknight Tene: I need to learn everything about everything
Tene: and I have to start somewhere. so I am starting here 17:27
Tene :)
whiteknight I really need to learn ruby eventually 17:30
I've put it off for long enough
pmichaud preliminary results of 2011.01 versus rakudo-bleed: gist.github.com/962932
aloha msg bacek_at_work preliminary results of 2011.01 versus rakudo-bleed: gist.github.com/962932 17:32
aloha pmichaud: OK. I'll deliver the message.
pmichaud afk, lunch
17:33 ShaneC left
whiteknight FFFFFUUUUUUU 17:41
There's really no excuse for our performance still being in that same ballpark. We should be much better than 3.0 17:42
not just a hair better on some benchmarks
cotto_work ~~ 17:43
whiteknight good morning, cotto_work 17:44
cotto_work hi whiteknight 17:46
dalek nxed: r991 | NotFound++ | trunk/winxedst (2 files):
improve prefix ++ and -- operators in stage 0
17:49
17:50 rurban_ joined 17:52 rurban left, rurban_ is now known as rurban 17:58 benabik joined
dalek nxed: r992 | NotFound++ | trunk/winxedst0.cpp:
fix generated indentation
18:00
18:10 ambs left
dalek nxed: r993 | NotFound++ | trunk/winxedst1.winxed:
profit from ++ improvements
18:10
18:13 birdwindupbird left 18:14 whiteknight left 18:15 _dolmen_ joined
coke_ (benchmark) is it possible that the benchmark is dominated by rakudo, not parrot? 18:18
plobsing coke_: git log --after 2011.01 shows 7 commits. 18:21
coke_ plobsing: so?
plobsing none of them look particularly suspect
coke_ I think you misunderstand my point. I'm suggesting that perhaps even if parrot is improving slightly, if rakudo is doing a lot of work, it doesn't matter. 18:22
(not that I think this is necessarily the case, but that's what I'm floating here.) 18:23
sorear time = rakudo * parrot
everything rakudo does relies on slow parrot ops
plobsing I'd also point out that Ωη exhibits a similar regression
likely due to similar means of operation 18:24
so it isn't just rakudo
18:24 whiteknight joined
pmichaud coke_: what we can say pretty definitively is that parrot performance with ms2 has gotten substantially worse 18:27
so, *something* has been changing to cause the significant slowdown 18:28
(I'm currently doing some bisects to see if I can narrow it down a bit)
("git log --after=2011.01" doesn't show all of the commits since the 2011.01 release for me.) 18:31
plobsing hmmm... not sure what's up with that 18:32
pmichaud maybe git is treating it like some sort of weird date
git log --after=2011.01.01 shows me all of the commits since jan 1
18:33 _dolmen_ left, _dolmen_ joined 18:34 dolmen__ joined
plobsing pmichaud: would it be possible to run some identical version of parrot accross 3.0 and 3.1 to show the regression is parrot-side? 18:34
pmichaud you mean "identical version of rakudo"?
plobsing s/identical... yeah that 18:35
pmichaud not really. 3.0 didn't have the write barrier code, 3.1 required it
so rakudo *had* to change to cope with that change in parrot.
plobsing didn't some intermediary versions of parrot have a nop wb macro?
benabik I think you want "git log 2011.01.01.." 18:36
pmichaud not until after 3.0 was released
plobsing benabik: no, I was trying to refer to the release tag
pmichaud notably, using the ..'s works for me
git log 2011.01..2011.02 shows me the commits between the two releases
benabik plobsing: --after is for dates, not tags 18:37
18:37 dolmen__ left
benabik plobsing: A..B is a revision range from committish A to committish B. Omitting one means HEAD. 18:37
plobsing I'm used to git tools dwimming without me even thinking about it anymore. I didn't even bother looking up the --after flag, I just assumed it was there. 18:38
pmichaud: we could provide a small patch to 3.0 that added a nop-wb macro. would that allow a direct head-to-head? 18:40
pmichaud plobsing: I think I've already isolated it to before the write barrier code
just need about 30 more seconds to confirm :)
okay 18:41
plobsing benabik: so why does "--after 2011.01" mean after May 1st then? 2011.01 is clearly year.month. year.day makes no sense. 18:42
pmichaud rakudo 2011.01-25-g03380cd running on parrot RELEASE_3_0_0-457-gfe658a7 takes 141 seconds for core.pm
benabik plobsing: The approxidate code is... wierd.
pmichaud this is the version of rakudo *before* the write barrier patches were applied 18:43
plobsing humans and time are a recipe for fail, true. but this one is one of the more straightforward cases.
pmichaud I may be able to run this version of rakudo on stock 3.0.0
benabik plobsing: It will parse num.num.num as Y-M-D unless M > 12. It appears to give preference to day over month in the two digit range. Given reason is so that "01 Apr 05" is "April 1, 2005" (git.git:date.c:523) 18:45
plobsing benabik: but if you only have 2 pieces of information, and one is a year, logically, the other is a month. otherwise the date is nonsensical and parsing should throw an error. 18:47
benabik plobsing: Git's date parsing generally prefers "good enough" to "actually correct". It looks like the code that handles yyyy.mm.dd only triggers if given three numbers.
pmichaud okay, confirmed that the issue is likely a Parrot one 18:48
benabik plobsing: It only parses forwards, so it uses the first two digit number as a day so it can get a month later. I think the best idea would be to extend the yyyy.mm.dd function to use "no day" to mean 1. 18:49
pmichaud rakudo 2011.01-25-g03380cd running on parrot RELEASE_3_0_0 takes 70 seconds for core.pm
benabik writes a note to git list. 18:50
pmichaud so somewhere between RELEASE_3_0_0 and RELEASE_3_0_0-457-gfe658a7 we experienced a 200% slowdown in compilation of core.pm
benabik plobsing: I'm only looking at what it does do, not what it should do. :-D
pmichaud I guess now it's just a matter of bisecting a bit :-)
pmichaud starts a bisect 18:51
benabik git-bisect++ 18:52
18:53 lucian joined
plobsing benabik: I get that. I'm just saying what it does makes no sense. I expect my heuristics to be smarter than that in this day and age. 18:53
<insert obligatory mjd heuristic quote> 18:54
benabik plobsing: Fair enough. I'm going to point this out on git@ and hope someone gets the tuits to fix it before I'm done with finals. :-D
tadzik you're lucky to have your finals soon :) 18:55
benabik tadzik: When's yours?
tadzik benabik: end on 30th of June
benabik tadzik: Ew. I thought the 20th was a bit obnoxious. 18:56
tadzik that quite sucks when you see the gsoc timeline
18:58 [hercynium] joined
dalek rrot: a5aa340 | cotto++ | src/gc/gc_gms.c:
typo fix
18:59
benabik tadzik: Agreed. 19:00
plobsing benabik: if git is going to take year, day as a valid date combo, the day had better be interpreted as julian date. I'm sure someone will find that useful ;) 19:01
pmichaud RELEASE_3_0_0-228-g2f0daea good
benabik plobsing: I suspect it's more something they never thought about in the YYYY.MM.DD parsing instead of a deliberate choice. 19:02
19:03 hercynium left, [hercynium] is now known as hercynium 19:05 hercynium left 19:06 hercynium joined
pmichaud RELEASE_3_0_0-342-gc2ffe55 good 19:06
RELEASE_3_0_0-399-g1429108 good 19:10
RELEASE_3_0_0-428-gbc265ee good 19:14
plobsing with each narrowing, it is looking more and more like gc_dynamic_threshold 19:17
pmichaud RELEASE_3_0_0-443-gbe26ad5 bad 19:20
RELEASE_3_0_0-369-gfe73887 good 19:23
19:26 jevin left
whiteknight parrot-dev has been getting a hell of a lot of chinese-language spam lately 19:29
pmichaud RELEASE_3_0_0-373-g0d519eb bad
whiteknight plobsing: I keep looking at that merge
I can't put my finger on it 19:30
pmichaud the merge commit is the first one that reported bad, yes.
two steps to go
whiteknight ok, that's kind of a relief. I was hoping it wouldn't be the exception refactors
it would be a shame to rip those out
plobsing whiteknight: that last two bisects point to c0ddc7563fb7ed78f7235fec72f8e635894018ae as something more reasonable 19:31
we could quite easily change that
whiteknight maybe a command-line flag, since it is a legitimate trade-off between memory consumption and performance 19:33
19:33 dafrito joined
whiteknight of course, I think we still have --gc=inf, so if you really want to skew one for the other we can already do it 19:33
you'll scream along until you hit swap
plobsing we have a command line flag to control it IIUC. but that kind of insight requires a lot of attention. the defaults should be decently fast to start with. 19:34
I think the 4M low threshold is mostly for lowmem systems. perhaps configure should detect low memory systems and/or have a --lowmem flag. 19:35
pmichaud RELEASE_3_0_0-371-g00d27fb bad
whiteknight plobsing: yeah, that's fine too. How do we detect low mem? Or, more specifically, what is "low"?
4M really is too low, unless your screenname is kid51 19:36
of course, if we revert that commit outright, I'm sure he'll see build failures
so we need something configurable
plobsing We have routines to detect system memory, on which we used to base our GC thresholds. 19:37
We could go back to that, but with sanity checks.
whiteknight right, my question is about what heuristic is used to determine "low"ness or not
if sysmem is below a certain threshold we use a fixed 4M threshold, and above that we use a percentage? 19:38
plobsing if (`whoami` == "jimk") { lowmem() }
whiteknight: that's the jist of it
whiteknight I actually like that heuristic. Compute the sysmem and the precentage. If it's below 4m, set it to 4m 19:39
plobsing because 4M is likely the lowest sane value, or at the low end of the scale for sane values
benabik The question becomes "what should we consider low", and set the percentage so 4M = low * percent
whiteknight right, that's the minimum that would allow it to even function
pmichaud RELEASE_3_0_0-370-gc0ddc75 bad 19:40
whiteknight the old system was to use one eighth of system memory. I like that
plobsing that is kinda big for a lower bound, but is more dynamic
pmichaud one eighth obviously worked reasonably well for 2011.01 :-) 19:41
benabik That means the minimum is only likely to trigger for systems with 32MB of detected memory.
s/likely/going/
plobsing pmichaud: sure, on an otherwise unloaded system.
pmichaud in my case, there's a huge difference between 1GB and 4MB :-) 19:42
19:42 AzureStone left
pmichaud (assuming Parrot_sysmem_amount is returning on my sys) 19:42
plobsing once you get other processes on there introducing cache pressure, 1/8 * ($x Gb) memory is huge
pmichaud note that for rakudo spectests, I'm running seven copies of rakudo at once
if we assume a "lowmem" machine to be 256M, then 32M was obviously still too big 19:44
(since it had to later to be reduced to 4MB) 19:45
I'm also wondering if the number isn't strictly linear
jnthn__ Logarithm? :)
plobsing alternatively, it might just be that 4M is a common size for L2 cache
whiteknight Maybe Parrot needs to set some lower limits for expected amount of RAM
plobsing which would make it a reasonable-ish guess
whiteknight I mean, there is a lower limit where things stop working, we should get out in front and codify that
below 128M, maybe we throw up our hands and decide it's not worthwhile 19:46
cotto_work ulimit would be nice for that.
whiteknight at least not for the "desktop edition" of Parrot
pmichaud I'm going to patch rakudo bleed with the /8 threshold and see what I get
whiteknight I would rather our policy be that 128M was our lowest supported level, then to randomly fail below that and be expected to debug every instance
or 64M, or whatever we want it to be 19:47
19:47 AzureStone joined
pmichaud note that kid51 was having trouble on a 256MB machine (which iirc led to this patch) 19:47
whiteknight not stating a lower limit means every failure is a problem for us. At some threshold we need to say we don't expect success
pmichaud so 128MB seems unachievable, at least for now
benabik pmichaud: By my math that means we should set the threshold to 1/64 of sysmem.
plobsing the sysmem code at that time was inconsistent across OSes 19:48
perhaps the darwin did not show the full 256M
pmichaud oh, wait 19:49
min_threshold only applies to ms2?
plobsing gms may have something similar
pmichaud because fixing this for ms2 won't improve gms :-( 19:50
plobsing I must admit I am a little surprised that this wound up being a GC-based regression. My money was riding on something else (eg: exceptions).
19:51 benabik left
cotto_work I'd have lost that bet too. 19:51
pmichaud sadly, it means that gms still isn't providing a significant performance improvement for rakudo
and that we can't really look at the 2011.01->2011.02 regression as the reason why 19:52
plobsing pmichaud: you could try uping GC_DEFAULT_NURSERY_SIZE
that's the gms equiv 19:53
and the threshold is currently 2% sysmem
whiteknight that seems low
plobsing whiteknight: that would be the size of the gen0 nursery. it's a moderately aggressive bet that performs well when the generational heuristic holds. 19:54
20:04 bluescreen left
plobsing pmichaud: is the 3.1 performance with c0ddc75 reverted equivalent or better than 3.0? 20:04
or is that large regression hiding other regressions?
pmichaud plobsing: I'm currently trying 3.3 with a revert of c0ddc75
that way we can compare it with gms also
I can try a 3.1 with c0ddc75 a bit later 20:05
(c0ddc75 revert)
gist.github.com/963276 # the first set of numbers with c0ddc75 revert 20:10
whiteknight okay, so that brings ms2 back into the ballpark
pmichaud the -p3 build is the one that has switched min_threshold back to sysmem()/8 20:11
whiteknight I'm still frustrated that gms is underperforming. We think it should be doing much better
plobsing I'd call that no significant difference except c0ddc75.
pmichaud sadly, it means ms2 still outperforms gms on my system
whiteknight pmichaud: it may just be your machine, since you have so much mem
pmichaud I can try it on my lower-memory notebook
it only has 3GB mem 20:12
(fsvo "only" :)
plobsing that means the ms2 regression was purely a function of GC tuning and suggests similar improvements can be had on gms
whiteknight I'm just trying to piece the data together. When GMS landed several people saw significant improvements in several benchmarks, including rakudo build and spectest
plobsing pmichaud: don't hate on the 3Gb lappy. that's my main machine.
pmichaud I love my laptop :)
it's still my favorite machine 20:13
whiteknight I was seeing at least 15% across the board, much better on certain bits
pmichaud whiteknight: yes, but was that relative to ms2 with the c0ddc75 commit?
whiteknight so the fact that ms2 is outperforming gms on your machine is striking to me
I really don't know the relative timing
pmichaud right
plobsing it is all in the tuning
pmichaud I *do* see performance improvement from gms versus 2011.01 on my notebook, yes.
but I don't think that's entirely a function of memory. There's something else going on there, because I didn't see a similar improvement on my old desktop when running it with only 3GB 20:14
there's something else about my laptop that causes gms to perform especially well
(I don't know what it is)
plobsing cache?
pmichaud L2 cache: 6144K 20:15
maybe
whiteknight my laptop has 4GB, I think, and it saw good improvements
pmichaud my old desktop's cache is 1024K 20:16
(most of the numbers are available in github.com/pmichaud/rakbench/tree/...esults/log if anyone wants to look 20:17
20:18 ambs joined 20:24 ambs left, ambs joined 20:31 fperrad left 20:39 soh_cah_toa joined 20:41 whiteknight left 20:47 ambs_ joined, ambs left, ambs_ is now known as ambs
cotto_work dukeleto: ping 20:48
21:02 perlite_ joined 21:05 benabik joined, perlite left, perlite_ is now known as perlite 21:06 benabik left 21:24 bubaflub left
dalek nxed: r994 | NotFound++ | trunk/winxedst1.winxed:
allow null in conditional operator and a few codingstd fixes
21:27
21:33 ambs left 21:36 bubaflub joined 21:39 theory left 21:41 mj41 left 21:53 jevin joined 22:02 benabik joined, benabik left 22:11 bubaflub left 22:29 lucian left 22:33 _dolmen_ left 22:40 perlite left, preflex left, spinclad left, dukeleto left, mikehh left, simcop2387 left, tcurtis left, cotto_work left, PerlJam left, kthakore left, marc left, jnthn__ left, TimToady left, pmichaud left, tadzik left 22:43 perlite joined, preflex joined, spinclad joined, dukeleto joined, mikehh joined, simcop2387 joined, tcurtis joined, cotto_work joined, PerlJam joined, kthakore joined, marc joined, jnthn__ joined, TimToady joined, pmichaud joined, tadzik joined
bacek ~~ 22:51
cotto_work ~~ 22:55
bacek msg pmichaud "sin.t". gms is actually faster than ms2. Parrot_pmc_new is 9.9G vs 10.4G instructions on 04-master vs 01. BUT! 04 allocates 1M more GCable. 15.1M vs 14.2M. And do more calls: pcc_invoke 744K vs 684K.
aloha OK. I'll deliver the message.
bacek run to $dayjob 22:56
cotto_work aloha: clock?
aloha cotto_work: LAX: Mon, 15:56 PDT / CHI: Mon, 17:56 CDT / NYC: Mon, 18:56 EDT / UTC: Mon, 22:56 UTC / LON: Mon, 23:56 BST / BER: Tue, 00:56 CEST / TOK: Tue, 07:56 JST / SYD: Tue, 08:56 EST
plobsing bacek: can you confirm the /topic entry about the breakage you added has been fixed?
bacek plobsing, ah. Yes. It's fixed. Not in very optimal way but fixed 22:58
plobsing yeah, I was thinking iterating the hash twice sucked, but it did the job 22:59
cotto_work bacek: do you have a test case that tickles the bug?
plobsing just confirming there wasn't some deeper issue
bacek cotto_work, I'm not sure it's "a bug". Just observation of change in behavior. 23:00
cotto_work double free sounds like a bug
bacek cotto_work, or are you asking about /topic?
cotto_work yes 23:01
bacek it's kind of hard to write testcase for it. I'll try to implement it tonight.
cotto_work ok
moderator Parrot 3.3.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today 23:01
23:04 hercynium left
cotto_work I see why that'd be a tricky test case. You can always initialize and clone it directly. 23:04
23:10 whiteknight joined, bubaflub joined
bacek_at_work ~~ 23:21
whiteknight hello bacek_at_work 23:22
bacek_at_work aloha, whiteknight 23:23
whiteknight bacek_at_work: no more late debugging sessions! you need rest
bacek_at_work :)
23:25 theory joined
whiteknight I need to start valgrinding master 23:28
plobsing it would be nice if there were a benchmark framework that could be run in the background in spare cycles a la $x@home. 23:34
whiteknight yes, that would be quite nice
cotto_work ipfy@home 23:36
though benchmarking shouldn't really run in the background unless we're relying on something like valgrind 23:37
which has its own issues
whiteknight benchmarkin is nice, but we already know there is a performance problem. What we need is targetted searching to figure out when things went bad, then we need to figure out how to un-bad it 23:39
and unbad it on all our target platforms, not fixing one to regress another
plobsing whiteknight: if you maintained a database of performance benchmarks you cared about, you wouldn't have to bisect (or you could bisect from drastically reduced bounds) 23:41
whiteknight true
cotto_work actually, benchmarking in the background wouldn't be too bad on platforms that tell you how much time was spent per-process.
plobsing you could trigger alerts about degrading performance AS THEY HAPPEN, in stead of 4 months later when someone notices
cotto_work that'd be amazing 23:42
volunteers?
plobsing I guess I've talked this up too much not to
I'll look into it 23:43
along with the myriad of other things I've committed to doing in my copious spare time
cotto_work All we need is a barely-working prototype client and server. 23:46
fsvo "all"
plobsing don't we already have enough barely-working floating around here already?
cotto_work you'd think so 23:47
plobsing are there any virtualization solutions that emulate a real computers timings 23:51
cotto_work That's not a bad idea. 23:52
plobsing basically the system clock slows down and accelerates to hide the host