Related to this pull request: https://github.com/OpenImageIO/oiio/pull/273
I made some benchmarks and determined that our own homegrown atomic_int is exactly the same performance as what we get from TBB. After beefing up our spin_mutex implementation, we are still slower than TBB's, but within a factor of 2 generally, and that's on a pathological test that stresses spin_mutex in an unrealistic way; we don't think you'll see a difference in real-world programs that do more than repeatedly lock and unlock the spin locks. In light of this, should we: 0. Do nothing -- use TBB by default, but allow optional build time USE_TBB=0 to turn it off (necessary for platforms that TBB does not support). 1. Use our own code (i.e. USE_TBB=0) by default, but allow USE_TBB=1 to optionally be set at build time, which reverts back to the old way (using the copied TBB code in our tree). 2. Use our own code by default, but allow USE_TBB=1 to optionally be set at build time, which uses/requires a system-installed TBB (removing remnants of TBB source from our tree). 3. Not support TBB at all, just use our own code (simpler, fewer dependencies, but possible minor performance penalty on the platforms for which TBB still seems faster than our own code). Opinions? -- Larry Gritz [email protected] _______________________________________________ Oiio-dev mailing list [email protected] http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
