Memory Management ExampleThe following example shows how to use the LEDA_MEMORY macro on a pair of doubles. In the main program theclass pair is compared with another
class dumb_pair that does not use the LEDA_MEMORY macro.
#include <LEDA/system/memory.h> #include <LEDA/core/list.h> class pair { private: double x; double y; public: pair(double _x=0,double _y=0):x(_x),y(_y) {} pair(const pair& p):x(p.x),y(p.y) {} friend ostream& operator<<(ostream& o,const pair& p) {return o;} friend istream& operator>>(istream& i,const pair& p) {return i;} LEDA_MEMORY(pair) //use macro LEDA_MEMORY }; class dumb_pair { //does not use LEDA_MEMORY private: double x; double y; public: dumb_pair(double _x=0,double _y=0):x(_x),y(_y) {} dumb_pair(const dumb_pair& p):x(p.x),y(p.y) {} friend ostream& operator<<(ostream& o,const dumb_pair& p) {return o;} friend istream& operator>>(istream& i,const dumb_pair& p) {return i;} }; int main() { int i; float t=leda::used_time(); leda::list<dumb_pair> LD; for (i=0;i<1000000;i++) LD.append(dumb_pair()); LD.clear(); t=leda::used_time(t); std::cout << "t(dumb_pair): " << t << std::endl; t=leda::used_time(); leda::list<pair> L; for (i=0;i<1000000;i++) L.append(pair()); L.clear(); t=leda::used_time(t); std::cout << "t(pair): " << t << std::endl; return 0; } |
Manual Entries: |