Re: [linux-audio-dev] soft synth as a plugin

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-dev] soft synth as a plugin
From: Stefan Nitschke (stefan_nitschke_AT_hotmail.com)
Date: Fri Oct 18 2002 - 21:47:15 EEST


>
>erm, sorry, but why not use pointers?
>

Just out of couriosity i made a benchmark test between C and C++ with
gcc3. I dont have a clue abour x86 assembler so i made a measurement.

Here is the C code (not realy useful as real code would have a need for a
struct and a pointer operation to call the filter() function) and the
C++ code.
Both "simulate" a low pass filter and are compiled with:
  gcc -O2 -march=pentium -o filter filter.xx

-O3 with C is broken, i got an endless loop!
---------
double x1,y1,a,b;

const double filter(const double x)
{
  register double y;
  y = a*(x + x1) - b*y1;
  x1 = x;
  y1 = y;
  return y;
}

int main()
{
  double x=1;
  int i;
  x1 = y1 = 0;
  a = b = 0.5;
  for (i=0; i<1000000000; ++i) {
        x = filter(x);
  }
}
---------
class LowPass {
public:
  LowPass() { x1 = y1 = 0; a = b = 0.5; };
  ~LowPass() {};
  const double filter(const double x);
private:
  double x1,y1,a,b;
};
inline const double LowPass::filter(const double x)
{
  register double y;
  y = a*(x + x1) - b*y1;
  x1 = x;
  y1 = y;
  return y;
}

int main()
{
  //LowPass* LP = new LowPass();
  LowPass LP;
  double x=1;

  for (int i=0; i<1000000000; ++i) {
        //x = LP->filter(x);
        x = LP.filter(x);
  }
}
---------

The results on my AthlonXP machine are:

C++ with member:
real 0m11.847s
user 0m11.850s
sys 0m0.000s

C++ with new() and pointer:
real 0m12.337s
user 0m12.330s
sys 0m0.000s

C:
real 0m16.673s
user 0m16.670s
sys 0m0.000s

Well, i will stay with pointer less C++ :-)

- Stefan

_________________________________________________________________
Surf the Web without missing calls! Get MSN Broadband.
http://resourcecenter.msn.com/access/plans/freeactivation.asp


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Fri Oct 18 2002 - 21:52:51 EEST