CL-USER> (weblocks:reset-sessions)
seconds | consed | calls | sec/call | name
----------------------------------------------------------
4.431 | 306,962,624 | 612 | 0.007240 | AW::CACHED-SYSDEF-
CENTRAL-REGISTRY-SEARCH
0.093 | 1,398,512 | 97 | 0.000959 | WEBLOCKS:RENDER-LINK
0.065 | 4,750,048 | 306 | 0.000212 | WEBLOCKS:MAKE-LOCAL-
DEPENDENCY
0.064 | 5,164,592 | 2 | 0.031995 | WEBLOCKS:REDIRECT
0.058 | 4,623,040 | 7 | 0.008345 | AW::MAKE-CHILDREN
0.041 | 586,048 | 307 | 0.000134 | WEBLOCKS:COMPUTE-
PUBLIC-FILES-PATH
0.028 | 1,170,816 | 111 | 0.000249 | AW::AWLOG
AW> (hash-keys *asdf-cache*)
("weblocks-prevalence" "bordeaux-threads" "cl-prevalence" "s-sysdeps"
"s-xml"
"cl-ppcre" "metatilities" "asdf-system-connections" "metabang-bind"
"cl-containers" "metatilities-base" "moptilities" "closer-mop"
"weblocks"
"weblocks-memory" "trivial-timeout" "salza2" "f-underscore"
"anaphora" "md5"
"cl-cont" "fare-matcher" "fare-utils" "cl-fad" "sb-posix" "sb-grovel"
"parenscript" "cl-who" "cl-json" "puri" "hunchentoot" "usocket"
"sb-bsd-sockets" "split-sequence" "rfc2388" "cl+ssl" "flexi-streams"
"trivial-gray-streams" "cffi" "babel" "alexandria" "trivial-features"
"cl-base64" "chunga")
Any ideas?
I'm an idiot. It wasn't caching the very system I was looking for (aw
is the name of the webapp). So I added a symbolic link in the /usr/
local/lib/sbcl/site-systems folder to the webapp's .asd file. That
did the trick. I suppose the other option is to add the director to
the asdf:*central-registry*.
I was under the false impression that simply loading the .asd and
relevant package files (along with the entire webapp eventually) into
the lisp interpreter would update asdf such that it'd return the
correct path when querying for a system.
The times now are:
seconds | consed | calls | sec/call | name
---------------------------------------------------------
0.471 | 4,794,432 | 310 | 0.001518 | WEBLOCKS:RENDER-LINK
0.419 | 22,274,896 | 2,316 | 0.000181 | AW::AWLOG
0.145 | 13,334,848 | 982 | 0.000148 | WEBLOCKS:MAKE-LOCAL-
DEPENDENCY
0.059 | 4,379,008 | 996 | 0.000059 | WEBLOCKS:COMPUTE-
WEBAPP-PUBLIC-FILES-PATH
0.051 | 5,967,056 | 310 | 0.000166 | WEBLOCKS::GENERATE-
ACTION-CODE
0.046 | 4,647,600 | 7 | 0.006630 | AW::MAKE-CHILDREN
0.044 | 37,536 | 3,259 | 0.000014 | WEBLOCKS:ATTRIBUTIZE-
NAME
0.036 | 1,750,384 | 320 | 0.000112 | WEBLOCKS:DOM-CLASSES
0.035 | 1,445,936 | 997 | 0.000035 | WEBLOCKS:COMPUTE-
PUBLIC-FILES-PATH
Thanks to everyone for all the help!
Leslie
Sorry for the delay. Everyone seems to be ravaging the subject lines
these
days which confuses the hell out of me.
> It seems then, that the crucial advantage is that one can write a bunch of
> simple widgets and use the continuation code to keep track of how the user walks
> through them**. This frees up the programmer from having to create a super
> widget (what I did) that stores the state in the class instance and the render
> methods get complex.
It really depends on your particular needs but that does sound like
it, yeah.
> Now, one of the things I needed to figure out, is how to refresh the widget tree
> when one widget changes something like login state in an AJAX call. The login
> widget I wrote seemed to be fine regarding AJAX as the navigation was already built.
Are you talking about bug #6?
> ** Is there an example of this somewhere?
Of what exactly?
> So then the continuation parameter that is passed on in the continuation is
> the previous widget?
Continuations are always functions. Consider:
(require :cl-cont)
(use-package :cl-cont)
(with-call/cc
(format t "before continuation capture~%")
(let ((result (let/cc k (funcall k 5))))
(format t "after continuation capture; result: ~S~%" result)))
K equals
(lambda (arg)
(let ((result arg))
(format t "after continuation capture; result: ~S~%" result)))
Funcalling K inside the LET/CC will work as you expect, resuming
the continuation. If K is not called in the LET/CC it will not be
executed
at all.
Leslie
BTW - I use google groups to browse this and hitting Reply
automatically changes the subject of the thread. Luckily this
particular micro-thread is dying, so you'll only have two on this :)