
On Wed, 5 Dec 2012, Dave Abrahams wrote:
on Wed Dec 05 2012, Marcus Tomlinson <themarcustomlinson-AT-gmail.com> wrote:
Is there any interest out there for a library that allows you to create fast, efficient flow-based programs with an easy-to-use object-oriented interface? (http://en.wikipedia.org/wiki/Flow-based_programming)
I've created an open-source library that does this, called "DSPatch" ( http://sourceforge.net/projects/dspatch) and would like to contribute it to the Boost Libraries.
Please let me know if this sounds like something you'd like to see in Boost.
If you want such a library to be truly efficient, you should be able to wire together the dataflows at compile-time and not pay any overhead for composing large computations out of smaller ones. The accumulators library uses something like a dataflow model, with the "wiring" done completely at compile-time.
I have written a prototype for that type of framework, with inlining of adjacent flow nodes and both compile-time and run-time wiring available, but it is in C++11 and would need to be cleaned up before it is ready to release. I experience some performance loss when compared to hand-written code, but that may be a function of exactly the benchmarks chosen for testing and details of the version of GCC I used for the tests. See <URL:http://www.cs.indiana.edu/~rrnewton/papers/2012-FHPC_avalanche.pdf> for some information and performance results; although the paper is about using it in a parallel context, the system itself is not heavily tied to parallelism and could be adapted to work purely sequentially (I have done that for testing just by creating stub implementations of the few parallel constructs it uses). -- Jeremiah Willcock