freenode/#clasp - IRC Chatlog
Search
20:04:29
drmeister
That will take backtraces N times a second and count what percentage of backtraces contain every function for each function.
20:05:17
drmeister
If clasp is spending a lot of time in a function, either self time or because it's on the stack - it will show up with a large percentage.
20:06:32
drmeister
You run 'do-dtrace' --> /tmp/out-<pid>.user_stacks and then ./count-calls -i /tmp/out-<pid>.user_stacks -o /tmp/out-report.txt
20:07:27
drmeister
It only counts the function once for each backtrace that it appears in. So recursive calls that are on a backtrace multiple times only count for one.
20:20:14
drmeister
Could you shut down your notebook and come by my office? I'll rearrange things and show you what I mean.
21:44:09
drmeister
I'm getting pretty fed up with travis. They've increased the time clasp can use to 180 min - the build crashed at 2h30m and I can't see the log.
2:01:27
Bike
having the things depend on the environment also sucks, but i guess that's just what make-instance does
2:32:11
Bike
but in order to keep up with changes to classes and methods and stuff, it has to do a bunch of weird things
2:32:23
Bike
and if it's (make-instance 'foo ...), that has to work properly after (setf (find-class 'foo) ...)
2:34:26
drmeister
Do you have it figured out then? It sounds like a hard problem to handle changing the class.
2:35:36
Bike
obviously doable for clasp, but i was originally writing this thing to be as implementation independent as i could mmanage
2:37:08
Bike
a standard make instance is car, a couple funcalls, core:allocate-new-instance, a couple si:instance-set
2:39:01
drmeister
I'm not telling you to change what you are doing but here's a crazy idea. What if you compiled (make-instance 'foo ...) to (if (= (instance-stamp (find-class 'foo)) <somestamp>) (fast-make-instance-foo ...) (make-instance 'foo ...)) ?
2:40:35
drmeister
Yeah - my idea would drop back to the slow code from then on. More clever things would make the fast path reconfigurable - like compiling a new fast-make-instance-foo.
2:41:41
Bike
the part that really makes it different from fastgf is that the body depends not just on the class, but on the keyword arguments