All pastes #979649 Raw Edit

Untitled

public cpp v1 · immutable
·published 2008-04-10 14:30 UTC
rendered paste body
// -*- 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 <iostream>#include <string>#include <cstdlib>#include <ctime>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<n; ++i) {		val = toggle.activate().value();	}	cout << ((val) ? "true" : "false") << endl;	val = true;	NthToggle ntoggle(val, 3);	for (int i=0; i<n; i++) {		val = ntoggle.activate().value();	}	cout << ((val) ? "true" : "false") << endl;    clock_t endt=clock(); 	std::cout <<"Time: " << double(endt-start)/CLOCKS_PER_SEC * 1000 << " ms\n"; 	return 0;}