timeVirtual.cpp
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2 
3  * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4  * Atlanta, Georgia 30332-0415
5  * All Rights Reserved
6  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7 
8  * See LICENSE for the license information
9 
10  * -------------------------------------------------------------------------- */
11 
19 #include <gtsam/base/timing.h>
20 
21 #include <memory>
22 
23 #include <iostream>
24 
25 using namespace std;
26 using namespace gtsam;
27 
28 struct Plain {
29  size_t data;
30  Plain(size_t _data) : data(_data) {}
31  void setData(size_t data) { this->data = data; }
32 };
33 
34 struct Virtual {
35  size_t data;
36  Virtual(size_t _data) : data(_data) {}
37  virtual void setData(size_t data) { this->data = data; }
38  virtual ~Virtual() {}
39 };
40 
42  size_t data;
43  size_t refCount;
44  VirtualCounted(size_t _data) : data(_data) {}
45  virtual void setData(size_t data) { this->data = data; }
46  virtual ~VirtualCounted() {}
47 };
48 
49 int main(int argc, char *argv[]) {
50 
51  size_t trials = 10000000;
52 
53  gttic_(heap_plain_alloc_dealloc);
54  for(size_t i=0; i<trials; ++i) {
55  Plain *obj = new Plain(i);
56  delete obj;
57  }
58  gttoc_(heap_plain_alloc_dealloc);
59 
60  gttic_(heap_virtual_alloc_dealloc);
61  for(size_t i=0; i<trials; ++i) {
62  Virtual *obj = new Virtual(i);
63  delete obj;
64  }
65  gttoc_(heap_virtual_alloc_dealloc);
66 
67  gttic_(stack_plain_alloc_dealloc);
68  for(size_t i=0; i<trials; ++i) {
69  Plain obj(i);
70  }
71  gttoc_(stack_plain_alloc_dealloc);
72 
73  gttic_(stack_virtual_alloc_dealloc);
74  for(size_t i=0; i<trials; ++i) {
75  Virtual obj(i);
76  }
77  gttoc_(stack_virtual_alloc_dealloc);
78 
79  gttic_(shared_plain_alloc_dealloc);
80  for(size_t i=0; i<trials; ++i) {
81  std::shared_ptr<Plain> obj(new Plain(i));
82  }
83  gttoc_(shared_plain_alloc_dealloc);
84 
85  gttic_(shared_virtual_alloc_dealloc);
86  for(size_t i=0; i<trials; ++i) {
87  std::shared_ptr<Virtual> obj(new Virtual(i));
88  }
89  gttoc_(shared_virtual_alloc_dealloc);
90 
91 
92  gttic_(heap_plain_alloc_dealloc_call);
93  for(size_t i=0; i<trials; ++i) {
94  Plain *obj = new Plain(i);
95  obj->setData(i+1);
96  delete obj;
97  }
98  gttoc_(heap_plain_alloc_dealloc_call);
99 
100  gttic_(heap_virtual_alloc_dealloc_call);
101  for(size_t i=0; i<trials; ++i) {
102  Virtual *obj = new Virtual(i);
103  obj->setData(i+1);
104  delete obj;
105  }
106  gttoc_(heap_virtual_alloc_dealloc_call);
107 
108  gttic_(stack_plain_alloc_dealloc_call);
109  for(size_t i=0; i<trials; ++i) {
110  Plain obj(i);
111  obj.setData(i+1);
112  }
113  gttoc_(stack_plain_alloc_dealloc_call);
114 
115  gttic_(stack_virtual_alloc_dealloc_call);
116  for(size_t i=0; i<trials; ++i) {
117  Virtual obj(i);
118  obj.setData(i+1);
119  }
120  gttoc_(stack_virtual_alloc_dealloc_call);
121 
122  gttic_(shared_plain_alloc_dealloc_call);
123  for(size_t i=0; i<trials; ++i) {
124  std::shared_ptr<Plain> obj(new Plain(i));
125  obj->setData(i+1);
126  }
127  gttoc_(shared_plain_alloc_dealloc_call);
128 
129  gttic_(shared_virtual_alloc_dealloc_call);
130  for(size_t i=0; i<trials; ++i) {
131  std::shared_ptr<Virtual> obj(new Virtual(i));
132  obj->setData(i+1);
133  }
134  gttoc_(shared_virtual_alloc_dealloc_call);
135 
136  gttic_(intrusive_virtual_alloc_dealloc_call);
137  for(size_t i=0; i<trials; ++i) {
138  std::shared_ptr<VirtualCounted> obj(new VirtualCounted(i));
139  obj->setData(i+1);
140  }
141  gttoc_(intrusive_virtual_alloc_dealloc_call);
142 
143  tictoc_print_();
144 
145  return 0;
146 }
timing.h
Timing utilities.
VirtualCounted::setData
virtual void setData(size_t data)
Definition: timeVirtual.cpp:45
Virtual::Virtual
Virtual(size_t _data)
Definition: timeVirtual.cpp:36
Virtual::~Virtual
virtual ~Virtual()
Definition: timeVirtual.cpp:38
VirtualCounted::refCount
size_t refCount
Definition: timeVirtual.cpp:43
VirtualCounted::data
size_t data
Definition: timeVirtual.cpp:42
Plain::Plain
Plain(size_t _data)
Definition: timeVirtual.cpp:30
VirtualCounted::VirtualCounted
VirtualCounted(size_t _data)
Definition: timeVirtual.cpp:44
Plain::setData
void setData(size_t data)
Definition: timeVirtual.cpp:31
VirtualCounted
Definition: timeVirtual.cpp:41
Virtual::data
size_t data
Definition: timeVirtual.cpp:35
data
int data[]
Definition: Map_placement_new.cpp:1
Plain
Definition: timeVirtual.cpp:28
gttoc_
#define gttoc_(label)
Definition: timing.h:250
Virtual
Definition: timeVirtual.cpp:34
gttic_
#define gttic_(label)
Definition: timing.h:245
main
int main(int argc, char *argv[])
Definition: timeVirtual.cpp:49
gtsam::tictoc_print_
void tictoc_print_()
Definition: timing.h:268
VirtualCounted::~VirtualCounted
virtual ~VirtualCounted()
Definition: timeVirtual.cpp:46
gtsam
traits
Definition: SFMdata.h:40
std
Definition: BFloat16.h:88
Plain::data
size_t data
Definition: timeVirtual.cpp:29
i
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Virtual::setData
virtual void setData(size_t data)
Definition: timeVirtual.cpp:37


gtsam
Author(s):
autogenerated on Sat Nov 16 2024 04:09:14