| 01:11.56 | starseeker | lands back in MD |
| 02:22.55 | starseeker | hah: http://public.kitware.com/pipermail/cmake-developers/2011-November/002490.html |
| 02:23.52 | starseeker | "I have also successfully tested [ninja+CMake building] with the build systems for OpenCV, Bullet Physics, BRL-CAD, kdelibs and Path64." |
| 02:24.00 | starseeker | must test this |
| 03:25.26 | starseeker | BRL-CAD - CMake + ninja: full compilation time 8 minutes 43 seconds, empty rebuild 0 sec (e.g. < 1 - not measurable by the build delta calculation) |
| 03:27.01 | starseeker | BRL-CAD - CMake + make: full compilation time 9 minutes 8 seconds, empty rebuild 12 sec |
| 03:27.44 | starseeker | (empty rebuild means running ninja/make -j3 after the complete, successful compile, when there's nothing left to do |
| 03:28.31 | starseeker | make will obviously do better on machines with more parallel mojo (yay 2 cores...) |
| 03:29.04 | starseeker | but then, ninja also uses all available cores... |
| 03:29.30 | starseeker | either way, nifty |
| 03:31.18 | starseeker | editing search.c in librt and doing a full rebuild... 19 sec. for ninja, 31 for make -j3 |
| 03:33.25 | starseeker | ninja librt and ninja rt work as expected |
| 03:33.41 | starseeker | sweet |
| 03:41.20 | CIA-28 | BRL-CAD: 03starseeker * r48197 10/brlcad/trunk/TODO: Add a reminder to expand documentation on building BRL-CAD to other tools CMake opens up support for. Low priority. |
| 03:44.01 | CIA-28 | BRL-CAD: 03starseeker * r48198 10/brlcad/trunk/TODO: |
| 03:44.02 | CIA-28 | BRL-CAD: These two DocBook items are addressed - other DocBook TODOs need review - in |
| 03:44.02 | CIA-28 | BRL-CAD: particular, many formatting elements have at least some examples of improved |
| 03:44.02 | CIA-28 | BRL-CAD: formatting, and need to be reworked comprehensively through the DocBook books |
| 05:00.25 | Computer | .window close |
| 05:00.28 | *** part/#brlcad Computer (~Computer@unaffiliated/computer) | |
| 11:47.31 | *** join/#brlcad jordisayol (~jordisayo@unaffiliated/jordisayol) | |
| 12:05.09 | *** join/#brlcad merzo (~merzo@189-243-132-95.pool.ukrtel.net) | |
| 14:32.25 | *** join/#brlcad merzo (~merzo@35-70-132-95.pool.ukrtel.net) | |
| 15:07.57 | brlcad | starseeker: welcome back |
| 15:09.06 | brlcad | starseeker: what's the ninja time without -j* on an empty rebuild? |
| 16:23.08 | ``Erik | starseeker made it sound like ninja doesn't take a -j option... wonder if it has a 'throttle down to 1 cpu' option, though |
| 16:37.46 | starseeker | yeah, ninja uses all CPUs by default |
| 16:38.18 | starseeker | brlcad: thanks! good to be back |
| 17:12.15 | starseeker | ah, I'm wrong |
| 17:12.21 | starseeker | ninja uses 10 cpus by default |
| 17:12.33 | starseeker | ninja DOES support the -j flag |
| 17:38.50 | brlcad | so then the interesting question becomes how long ninja takes on a -j1 empty rebuild |
| 17:39.53 | *** join/#brlcad Stattrav (u3131@gateway/web/irccloud.com/x-yvvqjpomjuxlqxfk) | |
| 18:07.34 | starseeker | brlcad: seems to be less than a second |
| 18:08.38 | brlcad | cool, must avoid all the I/O of multiple files/dirs |
| 18:09.21 | starseeker | on a machine with more cores than my home box... build time for make - 3min, 51 sec. ninja 2min, 17sec |
| 18:09.41 | starseeker | isn't sure he believes that, sets up a repeat |
| 18:15.53 | starseeker | yeah, thought so |
| 18:18.05 | starseeker | make -j10 - 2 minutes 24 seconds; ninja (default) - 2 minutes 13 seconds |
| 18:18.59 | starseeker | no-op: make -j10 4sec; ninja (default) - < 1 sec |
| 18:20.51 | brlcad | so faster.. but not dramatically |
| 18:20.59 | brlcad | neat |
| 18:22.20 | starseeker | bets the compiler time is hugely dominant, at least ones things are in cache |
| 18:22.42 | starseeker | Mac might be interesting, with its higher io overheads |
| 18:22.44 | brlcad | like the smp-by-default, but not enough to motivate installing ninja everywhere I build to say the least |
| 18:22.56 | starseeker | nods |
| 18:23.43 | starseeker | pays off more on slower machines like my home box, where the empty opts do go significantly faster |
| 18:24.14 | brlcad | sure |
| 18:24.48 | brlcad | it looses value as you get more cross-platform, having to do installs |
| 18:24.57 | starseeker | right. |
| 18:24.58 | brlcad | that time is minimal for a single platform, but adds up |
| 18:25.43 | brlcad | it'd nominally take a half hour to install across a half-dozen host platforms, assuming nothing goes wrong |
| 18:26.03 | brlcad | ~ (30 * 60) / 4 |
| 18:26.03 | ibot | 450 |
| 18:26.13 | brlcad | that's a lot of empty builds .. :) |
| 18:26.20 | starseeker | heh |
| 18:26.46 | starseeker | letsee... as long as we're at it... how many do we do per day |
| 18:29.23 | brlcad | generous ten times a day would be about 2 months of full-time coding before it started to pay off assuming (falsely) that no new platforms need installs |
| 18:29.34 | starseeker | right |
| 18:30.40 | brlcad | ccache probably saves more than that :) |
| 18:31.21 | starseeker | heh |
| 18:31.31 | brlcad | eventually will pay off, especially if it were bundled with cmake |
| 18:31.53 | starseeker | was kinda hoping they might - would potentially be hugely useful on Windows... |
| 18:31.56 | starseeker | doubt it though |
| 18:32.40 | brlcad | we could probably cut our compilation time in half just through header cleanup alone |
| 18:33.07 | brlcad | definitely would take more than a half-hour, but bigger savings there |
| 18:33.15 | starseeker | really? I figured there would be some improvement, but I hadn't expected it to be that drastic |
| 18:34.43 | brlcad | not hugely significant on an optimized build, maybe 5%-50% .. but non-opt should fly |
| 18:35.10 | brlcad | it's parsing thousands of lines of code for every file |
| 18:36.05 | brlcad | stub in an empty int main() {return 0;} and it takes nearly as long to compile as a 20k-line bool.c |
| 18:36.29 | brlcad | all because including one header like raytrace.h ends up including nearly all of include/*.h |
| 18:36.35 | starseeker | ah |
| 18:36.48 | starseeker | wow |
| 18:37.05 | brlcad | that's 30k lines of logic it has to parse just for decls and macros |
| 18:37.17 | brlcad | breaking up the headers would cut that down by an order |
| 18:37.24 | starseeker | that cleanup is pretty non-trivial though, isn't it? (or at least, highly invasive) |
| 18:37.40 | brlcad | supremely trivial |
| 18:37.46 | brlcad | doesn't get much more trivial |
| 18:37.51 | brlcad | just tedious |
| 18:38.27 | starseeker | hmm... ok |
| 18:38.56 | starseeker | would have thought there would be some structural planning involved |
| 18:39.10 | brlcad | only non-obvious part is updating the .c files to only include the headers they actually need instead of higher-level headers like raytrace.h |
| 18:39.19 | brlcad | but even that is pretty easy |
| 18:39.26 | *** join/#brlcad Stattrav (u3131@gateway/web/irccloud.com/x-wdywtbmtuqrdhppo) | |
| 18:39.45 | starseeker | right - worst case, yank 'em all and add in what's missing |
| 18:39.57 | brlcad | exactly |
| 18:40.24 | brlcad | time consuming, tedious, but very trivial |
| 18:45.38 | archivist | or use pre-compiled headers |
| 18:47.12 | ``Erik | that'd be the ccache part, and it doesn't help on the first run |
| 18:48.32 | ``Erik | likes the minimal header inclusion approach to minimize coupling |
| 18:49.01 | starseeker | agrees |
| 18:49.46 | ``Erik | the big #include allIneed header approach smells similar to the jabba "class MyObject extends Object" antipattern |
| 20:24.16 | *** join/#brlcad Technicus (~Technicus@DSLPool-net208-2.wctc.net) | |
| 20:25.49 | brlcad | alrighty, all coverity accounts created |
| 20:26.24 | brlcad | anyone else in here (seriously) interested in helping out fix coverity issues? |
| 20:26.34 | brlcad | we're going to be hitting them all up hard next week |
| 21:21.46 | ``Erik | yipes, one of mine is #3 on the defect/kloc list :( |
| 21:22.22 | brlcad | heh |
| 21:22.48 | brlcad | I think I saw that one, free'd then read |
| 21:23.29 | ``Erik | I don't see a way to pull up 1 file and view all the issues with it, or annotate a file or anything |
| 21:23.56 | ``Erik | though I do see some hackish stuff that'd trigger coverity... using =NULL instead of UNUSED() |
| 21:29.42 | brlcad | that coverity run is from before the verbose strict mode work was completed, several months back |
| 21:29.53 | brlcad | so much of it will likely be obe |
| 21:30.05 | brlcad | i'm going to push another run here this weekend |
| 21:30.09 | brlcad | before we get started |
| 21:31.04 | brlcad | alas, fixing the issues is only half the work .. peer review, testing, and docs are going to be part of our fixing process |
| 21:32.24 | brlcad | especially while adhereing to DRY... :) |
| 21:32.47 | ``Erik | write everything twice... WET |
| 21:34.37 | brlcad | especially while adhereing to DRY... :) |
| 21:34.52 | brlcad | there, WET and DRY |
| 21:35.34 | brlcad | mmm... chipped beef on either wed or thurs |
| 21:39.01 | n_reed | ...or Write Every Time |
| 21:42.33 | ``Erik | ALL THE TIMES!!@~! </meme> |
| 22:12.06 | CIA-28 | BRL-CAD: 03n_reed * r48199 10/brlcad/trunk/src/libbn/plane.c: generalize bn_mkpoint_3planes for non-unitized direction vectors |