// -*- mode: c++ -*- // $Id: methcall.g++,v 1.8 2001/10/09 23:53:03 doug Exp $ // http://www.bagley.org/~doug/shootout/ // with some help from Bill Lear //** This copy courtesy of http://www.kano.net/javabench/ //** Optimized object creation/destruction for C++ //** Added Timer() code #include #include #include #include using namespace std; class Toggle { public: Toggle(bool start_state) : state(start_state) { } virtual ~Toggle() { } bool value() { return(state); } virtual Toggle& activate() { state = !state; return(*this); } protected: bool state; }; class NthToggle : public Toggle { public: NthToggle(bool start_state, int max_counter) : Toggle(start_state), count_max(max_counter), counter(0) { } Toggle& activate() { if (++this->counter >= this->count_max) { state = !state; counter = 0; } return(*this); } private: int count_max; int counter; }; int main(int argc, char *argv[]) { int n = ((argc == 2) ? atoi(argv[1]) : 1); clock_t start=clock(); bool val = true; Toggle toggle(val); for (int i=0; i