On Sep 27, 2007, at 9:39 AM, Chris Laux wrote:

How about just giving us a profile of memory usage?

The profile is at the bottom of this message, in sbcl's sb-sprof format.
If you can't interpret the numbers let me know and I'll dig up the
explanation from the web. I'm not really sure how to interpret the
results, and it might be buggy, because asking the profiler to report
causes the same (similar?) condition as garbage collection, that is the system hangs for minutes then works on as if nothing had happened (added
later: or never recovers again...)

It looks like this comes from the initial run of your system, so there is a bunch of space allocated there that should only be allocated once so it's not representative of what is going on later.

(Just to be sure, it might be interesting to look at elephant- memutil::*buffer-streams* and the sizes of all the buffer streams therein (apply #'+ (map 'list #'elephant-memutil::buffer-stream-size elephant-memutil::*buffer-streams*)) and see how many bytes are allocated to the serializer buffers.)

Some suspects:

- If you are reading a ton of strings from BDB, then you'll be allocated tons of space for each one as they have to go to/from foreign space. If you are reading tons of instances you'll be allocating space for the object header.

- If you are doing a significant amount of deserialization with lots of threads than you should know that each deserialization requires a call to (with-lock ...) to ensure that the shared pool of buffer streams is thread safe (a problem with elephant < 0.9). This could conceivably cause a lockup if there are lots of small deserializations happening concurrently across threads mapping over the same Btrees. Are you sure it's GC that's eating all the time, or non-lisp CPU time in general?


My guess is that you are deserializing much more data than you need during your join due to the map function reading the actual values of the tree into memory as you walk them. If you have a large, common word with little intersection in your final set then you'll spend alot of time reading in and throwing away that data.

Although it breaks the abstraction barrier, using IDs will be a definite gain. You'd just make that second BTree pairs of word- freq / obj-oid. Then you use the OID and object type to grab the object directly from elephant: (elephant::get-cached-instance oid classname)

Now using and throwing away persistent objects also means that you are filling a weak hash table (acting as cache) with objects that are then being reclaimed and this may be more expensive under SBCL than simple allocation. Your per-word btrees are likely to be reused query-to-query, but your result strings much less so. Instead, you may want to use your ID to directly grab the strings of interest and then, if you need to annotate them with more information,


This kind of application (inverse document indexing) using join queries is good fodder for making a contrib to elephant as I'm sure others would want to do it. I'm not sure the elephant architecture, as it stands, is the best way to do this though. You might be better off, performance wise, doing this in a C full-text indexing system and wrapping an interface to it. Then you only need to allocate space when you read in the result strings.

A potential feature for which there are already hooks is maintaining your own pool of lisp strings to deserialize into rather than relying on the GC. If you did a query to a BTree and provided a hint containing the string storage that might also relieve your memory congestion. This wouldn't show up until we get around to releasing the patches and features on the 0.9.1 tree and I can't predict when that will be.


In summary, every read you make from elephant allocates memory for the read value unless it is a persistent object and hits in the weak hash table. Objects are not that big, but the MOP means quite a bit of work goes on to allocate them and the memory is non-trival (i.e. bigger than a cons). You want to engineer the system so you are only reading the large objects you want, and are letting elephant do the sorted lookups internally. Sadly, we don't have proper join support due to the way we use the internal BDB Btree structure so there isn't a high performance way to do it. However, using IDs should buy you quite a bit.

Regards,
Ian



A likely candidate is the serializer, but I'm sure there could be other
corner cases.

It occurred to me that I should just describe what I'm doing, maybe
there's an obvious stupidity on my side. I'm indexing short messages to
be queries by a text search engine.

A main BTree maps from words to (sub-)BTrees that in turn map from
ranking (e.g. time, for recency) to (persistent) result object. To
answer a query, I then look up the (sub-)BTrees for each word in the
query and map over their elements until I have enough to fill a result
page with the intersection of their results.

This is probably a rather extreme use of the DB, for example creating so
many persistent instances from the store might be the problem for the
GC? Is there a "nicer" way of doing something like this? E.g. mapping
only to id's, so as not to reconstruct an instance if all I'm going to
do with is is "intersect" it's occurrance between lists of messages?

Cheers,

Chris


[NB: the order of the two output tables is reversed for ease of use]


Number of samples:     390
Sample interval:       4 regions (approximately 32 kB)
Total sampling amount: 1560 regions (approximately 12480 kB)
Number of cycles:      0


           Self        Total        Cumul
  Nr  Count     %  Count     %  Count     % Function
---------------------------------------------------------------------- --
   1     81  20.8     81  20.8     81  20.8
ELEPHANT-MEMUTIL::GRAB-BUFFER-STREAM
   2     73  18.7     73  18.7    154  39.5 (SB-PCL::FAST-METHOD
ELEPHANT-SERIALIZER2::DESERIALIZE-STRING (("#<...>" . "#<...>") "#<...>"
. "#<...>"))
   3     57  14.6     57  14.6    211  54.1
ELEPHANT::DESERIALIZE-DATABASE-VERSION-VALUE
   4     56  14.4     56  14.4    267  68.5
ELEPHANT-MEMUTIL::RETURN-BUFFER-STREAM
   5     50  12.8     50  12.8    317  81.3 FIND-PACKAGE
   6     35   9.0     35   9.0    352  90.3
ELEPHANT-SERIALIZER2::GET-CIRCULARITY-VECTOR
   7     16   4.1     16   4.1    368  94.4
ELEPHANT-SERIALIZER2::RELEASE-CIRCULARITY-VECTOR
8 12 3.1 12 3.1 380 97.4 ELEPHANT::GET-CACHED- INSTANCE
   9      6   1.5      6   1.5    386  99.0 (LAMBDA (K V))
  10      1   0.3      1   0.3    387  99.2 LIST
  11      1   0.3      1   0.3    388  99.5
ELEPHANT::MAKE-TRANSACTION-RECORD
  12      1   0.3      1   0.3    389  99.7 (SB-PCL::FAST-METHOD
MAKE-CURSOR (DB-BDB::BDB-BTREE))
  13      1   0.3      1   0.3    390 100.0
SB-KERNEL::%MAKE-INSTANCE-WITH-LAYOUT
  14      0   0.0    244  62.6    390 100.0 (LABELS
ELEPHANT-SERIALIZER2::%DESERIALIZE)
  15      0   0.0    307  78.7    390 100.0
ELEPHANT-SERIALIZER2::DESERIALIZE
  16      0   0.0    378  96.9    390 100.0 (SB-PCL::FAST-METHOD
CURSOR-PREV (DB-BDB::BDB-CURSOR))
  17      0   0.0    387  99.2    390 100.0 "Unknown component:
#x100F827230"
  18      0   0.0    387  99.2    390 100.0 (LAMBDA NIL)
  19      0   0.0    390 100.0    390 100.0 (SB-PCL::FAST-METHOD
ELEPHANT::EXECUTE-TRANSACTION (DB-BDB::BDB-STORE-CONTROLLER "#<...>" .
"#<...>"))
  20      0   0.0    390 100.0    390 100.0 (SB-PCL::FAST-METHOD
MAP-BTREE (T "#<...>" . "#<...>"))
  21      0   0.0    390 100.0    390 100.0 GET-BTREE-SUBSEQ
22 0 0.0 390 100.0 390 100.0 (LAMBDA (&OPTIONAL ("#<...>"
. "#<...>")))
23 0 0.0 390 100.0 390 100.0 (LAMBDA (&OPTIONAL ("#<...>"
. "#<...>")))
24 0 0.0 390 100.0 390 100.0 (LAMBDA (&OPTIONAL ("#<...>"
. "#<...>") "#<...>" . "#<...>"))
  25      0   0.0    390 100.0    390 100.0 ANSWER-QUERY
  26      0   0.0    390 100.0    390 100.0 PRODUCE-FEED
27 0 0.0 390 100.0 390 100.0 HUNCHENTOOT::PROCESS- REQUEST 28 0 0.0 390 100.0 390 100.0 HUNCHENTOOT::PROCESS- CONNECTION
  29      0   0.0    390 100.0    390 100.0 "Unknown component:
#x1000677630"
  30      0   0.0    390 100.0    390 100.0 "foreign function
call_into_lisp"
  31      0   0.0    390 100.0    390 100.0 "foreign function
new_thread_trampoline"
32 0 0.0 29 7.4 390 100.0 SB-INT:%FIND-PACKAGE-OR- LOSE
  33      0   0.0     29   7.4    390 100.0
SB-INT:FIND-UNDELETED-PACKAGE-OR-LOSE
  34      0   0.0     29   7.4    390 100.0 INTERN
  35      0   0.0    121  31.0    390 100.0 (SB-PCL::FAST-METHOD
ELEPHANT::DATABASE-VERSION (DB-BDB::BDB-STORE-CONTROLLER))
  36      0   0.0    121  31.0    390 100.0 (SB-PCL::FAST-METHOD
ELEPHANT::DATABASE-VERSION :AROUND (T))
  37      0   0.0     34   8.7    390 100.0 (FLET #:CLEANUP-FUN-279)
  38      0   0.0     22   5.6    390 100.0 (FLET #:CLEANUP-FUN-1505)
39 0 0.0 21 5.4 390 100.0 TRANSLATE-AND-INTERN- SYMBOL
  40      0   0.0      1   0.3    390 100.0 PACKAGE-NAME
  41      0   0.0      2   0.5    390 100.0 (SB-PCL::FAST-METHOD
CURSOR-LAST (DB-BDB::BDB-CURSOR))
  42      0   0.0      1   0.3    390 100.0
SB-ALIEN-INTERNALS:MAKE-ALIEN-VALUE
---------------------------------------------------------------------- --

                               Callers
                 Total.     Function
 Count     %  Count     %      Callees
---------------------------------------------------------------------- --
    30   7.7                   (SB-PCL::FAST-METHOD
ELEPHANT::DATABASE-VERSION (DB-BDB::BDB-STORE-CONTROLLER)) [35]
    51  13.1                   (SB-PCL::FAST-METHOD CURSOR-PREV
(DB-BDB::BDB-CURSOR)) [16]
    81  20.8     81  20.8   ELEPHANT-MEMUTIL::GRAB-BUFFER-STREAM [1]
---------------------------------------------------------------------- --
    73  18.7                   (LABELS
ELEPHANT-SERIALIZER2::%DESERIALIZE) [14]
    73  18.7     73  18.7   (SB-PCL::FAST-METHOD
ELEPHANT-SERIALIZER2::DESERIALIZE-STRING (("#<...>" . "#<...>") "#<...>"
. "#<...>")) [2]
---------------------------------------------------------------------- --
    57  14.6                   (SB-PCL::FAST-METHOD
ELEPHANT::DATABASE-VERSION (DB-BDB::BDB-STORE-CONTROLLER)) [35]
57 14.6 57 14.6 ELEPHANT::DESERIALIZE-DATABASE-VERSION- VALUE [3] ---------------------------------------------------------------------- --
    22   5.6                   (FLET #:CLEANUP-FUN-1505) [38]
    34   8.7                   (FLET #:CLEANUP-FUN-279) [37]
    56  14.4     56  14.4   ELEPHANT-MEMUTIL::RETURN-BUFFER-STREAM [4]
---------------------------------------------------------------------- --
    21   5.4                   TRANSLATE-AND-INTERN-SYMBOL [39]
    29   7.4                   SB-INT:%FIND-PACKAGE-OR-LOSE [32]
    50  12.8     50  12.8   FIND-PACKAGE [5]
---------------------------------------------------------------------- --
    35   9.0                   ELEPHANT-SERIALIZER2::DESERIALIZE [15]
35 9.0 35 9.0 ELEPHANT-SERIALIZER2::GET-CIRCULARITY- VECTOR [6] ---------------------------------------------------------------------- --
    16   4.1                   ELEPHANT-SERIALIZER2::DESERIALIZE [15]
    16   4.1     16   4.1
ELEPHANT-SERIALIZER2::RELEASE-CIRCULARITY-VECTOR [7]
---------------------------------------------------------------------- --
    12   3.1                   ELEPHANT-SERIALIZER2::DESERIALIZE [15]
    12   3.1     12   3.1   ELEPHANT::GET-CACHED-INSTANCE [8]
---------------------------------------------------------------------- --
     6   1.5                   "Unknown component: #x100F827230" [17]
     6   1.5      6   1.5   (LAMBDA (K V)) [9]
---------------------------------------------------------------------- --
     1   0.3                   (SB-PCL::FAST-METHOD
ELEPHANT::EXECUTE-TRANSACTION (DB-BDB::BDB-STORE-CONTROLLER "#<...>" .
"#<...>")) [19]
     1   0.3      1   0.3   LIST [10]
---------------------------------------------------------------------- --
     1   0.3                   (SB-PCL::FAST-METHOD
ELEPHANT::EXECUTE-TRANSACTION (DB-BDB::BDB-STORE-CONTROLLER "#<...>" .
"#<...>")) [19]
     1   0.3      1   0.3   ELEPHANT::MAKE-TRANSACTION-RECORD [11]
---------------------------------------------------------------------- --
     1   0.3                   "Unknown component: #x100F827230" [17]
     1   0.3      1   0.3   (SB-PCL::FAST-METHOD MAKE-CURSOR
(DB-BDB::BDB-BTREE)) [12]
---------------------------------------------------------------------- -- 1 0.3 SB-ALIEN-INTERNALS:MAKE-ALIEN-VALUE [42]
     1   0.3      1   0.3   SB-KERNEL::%MAKE-INSTANCE-WITH-LAYOUT [13]
---------------------------------------------------------------------- --
   244  62.6                   ELEPHANT-SERIALIZER2::DESERIALIZE [15]
     1   0.3                   (LABELS
ELEPHANT-SERIALIZER2::%DESERIALIZE) [14]
0 0.0 244 62.6 (LABELS ELEPHANT-SERIALIZER2::% DESERIALIZE) [14]
    21   5.4                   TRANSLATE-AND-INTERN-SYMBOL [39]
   121  31.0                   (SB-PCL::FAST-METHOD
ELEPHANT::DATABASE-VERSION :AROUND (T)) [36]
    29   7.4                   INTERN [34]
     1   0.3                   (LABELS
ELEPHANT-SERIALIZER2::%DESERIALIZE) [14]
    73  18.7                   (SB-PCL::FAST-METHOD
ELEPHANT-SERIALIZER2::DESERIALIZE-STRING (("#<...>" . "#<...>") "#<...>"
. "#<...>")) [2]
---------------------------------------------------------------------- --
     2   0.5                   (SB-PCL::FAST-METHOD CURSOR-LAST
(DB-BDB::BDB-CURSOR)) [41]
   305  78.2                   (SB-PCL::FAST-METHOD CURSOR-PREV
(DB-BDB::BDB-CURSOR)) [16]
     0   0.0    307  78.7   ELEPHANT-SERIALIZER2::DESERIALIZE [15]
    16   4.1
ELEPHANT-SERIALIZER2::RELEASE-CIRCULARITY-VECTOR [7]
    12   3.1                   ELEPHANT::GET-CACHED-INSTANCE [8]
    35   9.0
ELEPHANT-SERIALIZER2::GET-CIRCULARITY-VECTOR [6]
   244  62.6                   (LABELS
ELEPHANT-SERIALIZER2::%DESERIALIZE) [14]
---------------------------------------------------------------------- --
   378  96.9                   "Unknown component: #x100F827230" [17]
     0   0.0    378  96.9   (SB-PCL::FAST-METHOD CURSOR-PREV
(DB-BDB::BDB-CURSOR)) [16]
    22   5.6                   (FLET #:CLEANUP-FUN-1505) [38]
51 13.1 ELEPHANT-MEMUTIL::GRAB-BUFFER-STREAM [1]
   305  78.2                   ELEPHANT-SERIALIZER2::DESERIALIZE [15]
---------------------------------------------------------------------- --
   387  99.2                   (LAMBDA NIL) [18]
     0   0.0    387  99.2   "Unknown component: #x100F827230" [17]
     1   0.3                   (SB-PCL::FAST-METHOD MAKE-CURSOR
(DB-BDB::BDB-BTREE)) [12]
     2   0.5                   (SB-PCL::FAST-METHOD CURSOR-LAST
(DB-BDB::BDB-CURSOR)) [41]
     6   1.5                   (LAMBDA (K V)) [9]
   378  96.9                   (SB-PCL::FAST-METHOD CURSOR-PREV
(DB-BDB::BDB-CURSOR)) [16]
---------------------------------------------------------------------- --
   387  99.2                   (SB-PCL::FAST-METHOD
ELEPHANT::EXECUTE-TRANSACTION (DB-BDB::BDB-STORE-CONTROLLER "#<...>" .
"#<...>")) [19]
     0   0.0    387  99.2   (LAMBDA NIL) [18]
   387  99.2                   "Unknown component: #x100F827230" [17]
---------------------------------------------------------------------- --
   390 100.0                   (SB-PCL::FAST-METHOD MAP-BTREE (T
"#<...>" . "#<...>")) [20]
     0   0.0    390 100.0   (SB-PCL::FAST-METHOD
ELEPHANT::EXECUTE-TRANSACTION (DB-BDB::BDB-STORE-CONTROLLER "#<...>" .
"#<...>")) [19]
1 0.3 SB-ALIEN-INTERNALS:MAKE-ALIEN-VALUE [42]
     1   0.3                   ELEPHANT::MAKE-TRANSACTION-RECORD [11]
     1   0.3                   LIST [10]
   387  99.2                   (LAMBDA NIL) [18]
---------------------------------------------------------------------- --
   390 100.0                   GET-BTREE-SUBSEQ [21]
0 0.0 390 100.0 (SB-PCL::FAST-METHOD MAP-BTREE (T "#<...>" .
"#<...>")) [20]
   390 100.0                   (SB-PCL::FAST-METHOD
ELEPHANT::EXECUTE-TRANSACTION (DB-BDB::BDB-STORE-CONTROLLER "#<...>" .
"#<...>")) [19]
---------------------------------------------------------------------- --
   390 100.0                   (LAMBDA (&OPTIONAL ("#<...>" .
"#<...>"))) [22]
     0   0.0    390 100.0   GET-BTREE-SUBSEQ [21]
   390 100.0                   (SB-PCL::FAST-METHOD MAP-BTREE (T
"#<...>" . "#<...>")) [20]
---------------------------------------------------------------------- --
   390 100.0                   (LAMBDA (&OPTIONAL ("#<...>" .
"#<...>"))) [23]
0 0.0 390 100.0 (LAMBDA (&OPTIONAL ("#<...>" . "#<...>"))) [22]
   390 100.0                   GET-BTREE-SUBSEQ [21]
---------------------------------------------------------------------- -- 390 100.0 (LAMBDA (&OPTIONAL ("#<...>" . "#<...>")
"#<...>" . "#<...>")) [24]
0 0.0 390 100.0 (LAMBDA (&OPTIONAL ("#<...>" . "#<...>"))) [23]
   390 100.0                   (LAMBDA (&OPTIONAL ("#<...>" .
"#<...>"))) [22]
---------------------------------------------------------------------- --
   390 100.0                   ANSWER-QUERY [25]
     0   0.0    390 100.0   (LAMBDA (&OPTIONAL ("#<...>" . "#<...>")
"#<...>" . "#<...>")) [24]
   390 100.0                   (LAMBDA (&OPTIONAL ("#<...>" .
"#<...>"))) [23]
---------------------------------------------------------------------- --
   390 100.0                   PRODUCE-FEED [26]
     0   0.0    390 100.0   ANSWER-QUERY [25]
390 100.0 (LAMBDA (&OPTIONAL ("#<...>" . "#<...>")
"#<...>" . "#<...>")) [24]
---------------------------------------------------------------------- --
   390 100.0                   HUNCHENTOOT::PROCESS-REQUEST [27]
     0   0.0    390 100.0   PRODUCE-FEED [26]
   390 100.0                   ANSWER-QUERY [25]
---------------------------------------------------------------------- --
   390 100.0                   HUNCHENTOOT::PROCESS-CONNECTION [28]
     0   0.0    390 100.0   HUNCHENTOOT::PROCESS-REQUEST [27]
   390 100.0                   PRODUCE-FEED [26]
---------------------------------------------------------------------- --
   390 100.0                   "Unknown component: #x1000677630" [29]
     0   0.0    390 100.0   HUNCHENTOOT::PROCESS-CONNECTION [28]
   390 100.0                   HUNCHENTOOT::PROCESS-REQUEST [27]
---------------------------------------------------------------------- --
   390 100.0                   "foreign function call_into_lisp" [30]
     0   0.0    390 100.0   "Unknown component: #x1000677630" [29]
   390 100.0                   HUNCHENTOOT::PROCESS-CONNECTION [28]
---------------------------------------------------------------------- -- 390 100.0 "foreign function new_thread_trampoline" [31]
     0   0.0    390 100.0   "foreign function call_into_lisp" [30]
   390 100.0                   "Unknown component: #x1000677630" [29]
---------------------------------------------------------------------- -- 0 0.0 390 100.0 "foreign function new_thread_trampoline" [31]
   390 100.0                   "foreign function call_into_lisp" [30]
---------------------------------------------------------------------- --
     1   0.3                   PACKAGE-NAME [40]
28 7.2 SB-INT:FIND-UNDELETED-PACKAGE-OR- LOSE [33]
     0   0.0     29   7.4   SB-INT:%FIND-PACKAGE-OR-LOSE [32]
    29   7.4                   FIND-PACKAGE [5]
---------------------------------------------------------------------- --
    29   7.4                   INTERN [34]
     0   0.0     29   7.4   SB-INT:FIND-UNDELETED-PACKAGE-OR-LOSE [33]
     1   0.3                   PACKAGE-NAME [40]
    28   7.2                   SB-INT:%FIND-PACKAGE-OR-LOSE [32]
---------------------------------------------------------------------- --
    29   7.4                   (LABELS
ELEPHANT-SERIALIZER2::%DESERIALIZE) [14]
     0   0.0     29   7.4   INTERN [34]
29 7.4 SB-INT:FIND-UNDELETED-PACKAGE-OR- LOSE [33] ---------------------------------------------------------------------- --
   121  31.0                   (SB-PCL::FAST-METHOD
ELEPHANT::DATABASE-VERSION :AROUND (T)) [36]
     0   0.0    121  31.0   (SB-PCL::FAST-METHOD
ELEPHANT::DATABASE-VERSION (DB-BDB::BDB-STORE-CONTROLLER)) [35]
30 7.7 ELEPHANT-MEMUTIL::GRAB-BUFFER-STREAM [1]
    34   8.7                   (FLET #:CLEANUP-FUN-279) [37]
    57  14.6
ELEPHANT::DESERIALIZE-DATABASE-VERSION-VALUE [3]
---------------------------------------------------------------------- --
   121  31.0                   (LABELS
ELEPHANT-SERIALIZER2::%DESERIALIZE) [14]
     0   0.0    121  31.0   (SB-PCL::FAST-METHOD
ELEPHANT::DATABASE-VERSION :AROUND (T)) [36]
   121  31.0                   (SB-PCL::FAST-METHOD
ELEPHANT::DATABASE-VERSION (DB-BDB::BDB-STORE-CONTROLLER)) [35]
---------------------------------------------------------------------- --
    34   8.7                   (SB-PCL::FAST-METHOD
ELEPHANT::DATABASE-VERSION (DB-BDB::BDB-STORE-CONTROLLER)) [35]
     0   0.0     34   8.7   (FLET #:CLEANUP-FUN-279) [37]
34 8.7 ELEPHANT-MEMUTIL::RETURN-BUFFER- STREAM [4] ---------------------------------------------------------------------- --
    22   5.6                   (SB-PCL::FAST-METHOD CURSOR-PREV
(DB-BDB::BDB-CURSOR)) [16]
     0   0.0     22   5.6   (FLET #:CLEANUP-FUN-1505) [38]
22 5.6 ELEPHANT-MEMUTIL::RETURN-BUFFER- STREAM [4] ---------------------------------------------------------------------- --
    21   5.4                   (LABELS
ELEPHANT-SERIALIZER2::%DESERIALIZE) [14]
     0   0.0     21   5.4   TRANSLATE-AND-INTERN-SYMBOL [39]
    21   5.4                   FIND-PACKAGE [5]
---------------------------------------------------------------------- -- 1 0.3 SB-INT:FIND-UNDELETED-PACKAGE-OR- LOSE [33]
     0   0.0      1   0.3   PACKAGE-NAME [40]
     1   0.3                   SB-INT:%FIND-PACKAGE-OR-LOSE [32]
---------------------------------------------------------------------- --
     2   0.5                   "Unknown component: #x100F827230" [17]
     0   0.0      2   0.5   (SB-PCL::FAST-METHOD CURSOR-LAST
(DB-BDB::BDB-CURSOR)) [41]
     2   0.5                   ELEPHANT-SERIALIZER2::DESERIALIZE [15]
---------------------------------------------------------------------- --
     1   0.3                   (SB-PCL::FAST-METHOD
ELEPHANT::EXECUTE-TRANSACTION (DB-BDB::BDB-STORE-CONTROLLER "#<...>" .
"#<...>")) [19]
     0   0.0      1   0.3   SB-ALIEN-INTERNALS:MAKE-ALIEN-VALUE [42]
1 0.3 SB-KERNEL::%MAKE-INSTANCE-WITH- LAYOUT [13] ---------------------------------------------------------------------- --
_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel

_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel

Reply via email to