SPBench Benchmarks

Single source benchmarks

These are the commom benchmarks. They read data from a single input and generate a single stream of input and output data. The source operator runs inside the stream region, as shown in the example below.

int main (int argc, char* argv[]){

   /* Init of stream region */
   while(1){
      spb::Item item;
      if(!spb::Source::op(item)) break;
      spb::First::op(item);
      spb::Second::op(item);
      spb::Nth::op(item);
      spb::Sink::op(item);
   } // End of stream region

   return 0;
}

Multiple source benchmarks

These are benchmarks that can read data from different inputs and generate multiple input/output streams. Here, the n source operators are run each by a exclusive thread outside the stream region. Each source has its own queue with items that can be accessed by a getItem() method inside the stream region, as shown in the example below.

int main (int argc, char* argv[]){

   spb::Source source1;
   spb::Source source2;

   source1.init();
   source2.init();

   /* Stream region */
   while(!(source1.depleted() && source2.depleted())){

      spb::Item item1 = source1.getItem();
      spb::Item item2 = source2.getItem();

      spb::First::op(item1);
      spb::First::op(item2);

      spb::Nth::op(item1);
      spb::Nth::op(item2);

      spb::Sink::op(item1);
      spb::Sink::op(item2);
   }
   return 0;
}