| 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) |