04:50.47 |
brlcad |
does a happy code
dance |
04:51.27 |
brlcad |
new page allocation compiled clean and worked
right on the first try, both counts |
04:51.55 |
brlcad |
which by itself is meh, good, but with nuggets
like this in there, pretty aweseom:
&(heaps[sz-1][pages[sz-1]-1][used[sz-1][pages[sz-1]-1]++]); |
04:53.57 |
brlcad |
now to put it to a real-world test |
05:25.31 |
brlcad |
wow, richard's pool allocator is considerably
worse than system malloc/free |
05:29.13 |
brlcad |
hehe, and performance actually gets worse if
we don't free memory ... |
05:29.44 |
brlcad |
some metrics |
05:31.46 |
brlcad |
~52M mallocs: sys=5s pool=91s
heap=3s |
05:34.27 |
brlcad |
~52M malloc+frees: sys=10s pool=73s
heap=4s |
08:15.17 |
brlcad |
welp, it's hooked into libbu now and running
some numbers now ... will see where this might have a useful
impast |
08:15.29 |
brlcad |
calls it a
night |
08:28.48 |
*** join/#brlcad witness
(uid10044@gateway/web/irccloud.com/x-obaiatmvbsvdcgkq) |
08:38.38 |
*** join/#brlcad luca79
(~luca@net-2-34-220-10.cust.dsl.vodafone.it) |
09:03.44 |
*** join/#brlcad Black_Rabbit
(~Black_Rab@115.248.130.148) |
09:19.52 |
*** join/#brlcad merzo
(~merzo@94.45.58.138) |
09:36.05 |
*** join/#brlcad merzo
(~merzo@user-94-45-58-138-1.skif.com.ua) |
12:49.12 |
*** join/#brlcad Black_Rabbit
(~Black_Rab@115.248.130.148) |
13:28.37 |
*** join/#brlcad Black_Rabbit
(~Black_Rab@115.248.130.148) |
13:41.02 |
brlcad |
preliminary numbers are in for conversion,
it's giving about a 30% reduction in time |
13:41.34 |
brlcad |
a 4 min conversion is reduced to 2 and a half
min |
13:49.27 |
*** join/#brlcad luca79
(~luca@net-2-34-220-10.cust.dsl.vodafone.it) |
15:35.57 |
*** join/#brlcad merzo
(~merzo@94.45.58.138) |
15:41.54 |
*** join/#brlcad Black_Rabbit
(~Black_Rab@115.248.130.148) |
15:42.25 |
``Erik |
nifty |
16:15.44 |
*** join/#brlcad merzo
(~merzo@user-94-45-58-138-1.skif.com.ua) |
16:51.30 |
Notify |
03BRL-CAD:brlcad * 54534
brlcad/trunk/src/other/tcl/CMakeLists.txt: shouldn't be compiling
tclAppInit into libtcl -- it contains a main() intended for front
end clients like tclsh |
17:33.59 |
Notify |
03BRL-CAD:carlmoore * 54535
brlcad/trunk/src/fb/bw-fb.c: insert space before a left
parenthesis |
19:55.15 |
Notify |
03BRL-CAD:brlcad * 54536
(brlcad/trunk/src/librt/db5_io.c
brlcad/trunk/src/librt/db5_scan.c): remove the pooling on geometry
objects at the IO layer. testing of the pooling calls indicated
performance was substantially slower than system malloc/free (by an
order of magnitude). |
20:47.59 |
Notify |
03BRL-CAD:brlcad * 54537
brlcad/trunk/include/bu.h: examples should do what the api docs
say, if we call BU_GET() then we should call BU_PUT() ... not
bu_free(). |
20:49.34 |
Notify |
03BRL-CAD:brlcad * 54538
brlcad/trunk/include/nmg.h: BU_PUT() to match BU_GET() |
20:52.01 |
*** join/#brlcad merzo
(~merzo@6-121-133-95.pool.ukrtel.net) |
20:57.47 |
Notify |
03BRL-CAD:brlcad * 54539
brlcad/trunk/src/libged/ged.c: match BU_PUT() to BU_GET()
allocation |
21:47.53 |
Notify |
03BRL-CAD:carlmoore * 54540
brlcad/trunk/src/util/bw3-pix.c: use capital U |
22:02.45 |
Notify |
03BRL-CAD:brlcad * 54541
brlcad/trunk/include/nurb.h: call bu_calloc instead of BU_GET since
we don't call the corresponding BU_PUT |
22:02.55 |
Notify |
03BRL-CAD:brlcad * 54542
brlcad/trunk/include/nmg.h: cast makes for an invalid lvalue,
remove it |
22:25.03 |
Notify |
03BRL-CAD:brlcad * 54543
(brlcad/trunk/src/libbu/heap.c
===================================================================
and 202 others): stub in an initial implementation of a really fast
heap-based memory allocation capability for small allocation sizes.
it allocates size-designated blocks of memory ('pages') in order to
substantially reduce calls to system malloc. it has a nice property
of being O(1) on alloc |
22:25.05 |
Notify |
and profiles substantially faster than system
malloc. from half to several orders of magnitude in testing (making
the call cost near-zero). presently only implemented for byte sizes
1 through 64 (trivial to extend). implementation of free is stubbed
empty, but intend to reuse free cells and reclaim memory on-demand.
made to match BU_GET/BU_PUT so it can serve as the back-end
implementation. |
22:27.41 |
brlcad |
``Erik: heh, "and 202 others" .. don't think
that's right |
22:27.44 |
Notify |
03BRL-CAD:brlcad * 54544
(brlcad/trunk/src/libbu/CMakeLists.txt
brlcad/trunk/src/libbu/Makefile.am): add new heap.c for
compilation |
22:33.10 |
Notify |
03BRL-CAD:brlcad * 54545
brlcad/trunk/include/raytrace.h: the motivation for
RT_GET_TREE()/RT_FREE_TREE() and keeping a free list in the
resource structure may be moot or at least unnecessary now, but
warrants performance testing |
22:38.02 |
Notify |
03BRL-CAD:brlcad * 54546 brlcad/trunk/CHANGES:
deprecate RT_GET_TREE() and RT_FREE_TREE(). probably minimally
impacting, but needs some review/testing so just
scheduled |
23:07.18 |
``Erik |
the parser got confused, the ===== stuff
shouldn't be there |
23:57.00 |
``Erik |
starseeker: zomfg real talking filibuster
going on now O.o /. has it |
23:57.33 |
``Erik |
(or, going on today, anyway) |