On Jul 25, 2013, at 4:07 PM, Check Nyah wrote:

> >Also, were the numbers stable?  That is, your two results are approximately 
> >65s vs 55s which is about 15% reduction in time.  If you ran the comparison 
> >a couple more >times with different matrices, is always about 15%?
> 
> Well the test was based on the fact that the code generates a real 
> transformation matrix, by constructing a random orthonormal basis vector 
> triplet x,y,z, i.e. ||x||=1, ||y||=1, ||z||=1, x·y=0, x·z=0, y·y=0, x×y=z, 
> plus a random translation vector t.

That doesn't really answer the question about whether the performance numbers 
were stable...  The question is really just inspecting how much of an influence 
CPU cache levels are having on performance, how much of an error bar there is 
on the *rate* of improvement in the general use case.  That said, your numbers 
as provided are already informative enough to characterize the impact.  Nicely 
done.

> My bn_mat_inverse() is clearly faster than the current libbn implementation 
> -- even if mine does a full 4x4 matrix inverse, and the old libbn one 
> something else! The most important point is that mine is easy to verify, and 
> does work on all matrices you care to throw at it (that are not singular); 
> the speed boost is just an added bonus.
> 
> My bn_mat_determinant() is only slightly faster than the current libbn 
> implementation. However, mine is much more robust wrt. compiler 
> optimizations: the existing implementation is only fast if the compiler can 
> optimize the code (which might uncover bugs elsewhere in the code, 
> considering the code base is pretty old). Considering how robust and simple 
> it is, and that it is never slower than the existing implementation (in fact 
> is significantly faster if the compiler does not perform heavy optimization), 
> I'd recommend using mine instead.

An excellent summary and you stated much of that earlier too.  My comments 
before weren't an indication of doubt (or trust).  Assertions are pretty much 
irrelevant when it comes to changing core API.  It's best to always test and 
prove it's correct / better or, if only, to have metrics behind an improvement 
claim.

We really only care about objective demonstrable algorithm correctness, code 
maintainability, and runtime performance during optimized compiles.  If you do 
it enough, testing can go REALLY quickly.  Your testing demonstrated all three 
points brilliantly.  Again, nicely done.

Cheers!
Sean
 
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
BRL-CAD Developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-devel

Reply via email to