libera/#clasp - IRC Chatlog
Search
14:20:18
Bike
mm, you ran the static analysis again... i had to do that too, but that's fine, your changes should go in first
14:21:45
yitzi
Yeah. I probably should have made that a separate commit in case there were conflicts.
14:49:46
selwynning
i was thinking more along the lines of compiling individual functions to wasm by making use of clasp's compiler to llvm
14:50:12
selwynning
i don't necessarily need the entire lisp compiler or even much of ansi to be present in what i deploy
14:53:49
Bike
clasp is not really built with the idea of having functions run freestanding like that.
15:41:25
yitzi
Bike: I just reverted return of -1 in set_column and made it return the column value directly. This match set_position, etc. vs making set_column return void.
18:05:55
Bike
one thing that sticks out in the swank perf data is that 3.5% of the time is spent in lisp_multipleValues, which does nothing but load a thread local variable. i guess doing so is pretty expensive.
18:15:43
drmeister
It takes 0.8 seconds to read the 916,200,191 bytes into a static vector with this...
18:19:48
Bike
with inline definitions disabled, the next most serious slow point in the swank perf data is eclector. it takes 18.6% of the time. that might need some closer review
18:22:40
Bike
i would still expect it to take a pretty good chunk of time since you're still making a gigabyte of objects
18:24:28
Bike
i want to fix that stuff but doing it right will be some pretty serious changes to the compiler
18:29:48
Bike
seems like it's still taking a while in fast-read-byte. might be more arithmetic problems
18:48:06
Bike
ok, dpb thing might be more fixable actually. in a quick test looks like if %ldb is inlined (which it is not, at the moment), and the inputs are declared fixnum, clasp does optimize it down to take 8 ms instead of 51 ms (a million iterations)
18:48:35
yitzi
You could use a different flamegraph library. There are some online ones. Would be nice to have lisp one
18:48:38
Bike
dunno if the type inference will handle things on its own, though. it's not super good at the log*** functions right now
18:49:32
Bike
things are at least set up so that log*** on fixnums will be inlined, so llvm can treat them as bitwise ops and do whatever it does for c code
18:54:13
drmeister
Recognizing something like " 7f3893eea528 FAST-READ-BYTE^FAST-IO^FN^^-lcl+0x1c8 (/tmp/perf-710561.map)" works fine.
18:55:26
drmeister
Does anyone know any perl regular expression magic so that it handles a line like...
18:57:28
Bike
so the regex is looking for some letters and numbers, then maybe space, then characters, and then " (something)", i guess?
18:57:48
Bike
oh, so in that case it's not choking on the space, it's the parentheses that are throwing it
18:58:05
drmeister
I WANT "clbind::WRAPPER_VariadicFunction<bool (*)(gctools::smart_ptr<core::Number_O>, gctools::smart_ptr<core::Number_O>), core::policy::clasp_policy, clbind::pureOutsPack<std::integral_constant<bool, true>, std::integral_constant<bool, true> >, clbind::BytecodeWrapper>::entry_point_2+0x83" to be the second matched string.
18:58:36
drmeister
And "(/home/meister/Development/cando/build/boehmprecise/iclasp)" as the last string.
19:36:15
drmeister
That didn't work and the problem is deeper in the perl code. So I hacked it and got it to work. It was a waste of time.
19:39:22
Bike
i have not been able to run perf with CLASP_ENABLE_TRAMPOLINES. it complains pretty inscrutably.
19:40:29
Bike
i wouldn't bother spending too much time on this though - the point is that it's spending time in a structure writer, which is a pretty simple function
21:08:52
yitzi
Bike: I am running flamegraphs on Inravina right now. There core::lisp_multipleValues is about ~8%.