有2个班级
类DataOri和类DataMod几乎相同,除了operator new / delete。
我为类DataMod重新定义了operator new / delete。
class DataOri
{
int v1[100];
char c1;
int v2[7];
char c2;
public:
DataOri();
}
class DataMod
{
int v1[100];
char c1;
int v2[7];
char c2;
public:
DataMod();
static void* operator new (size_t size)
{
if (GetReporter())
{
++(GetReporter()->AllocNodeCount());
}
return malloc(sizeof(DataMod));
}
void operator delete (void *p)
{
free(p);
if (GetReporter())
{
--(GetReporter()->AllocNodeCount());
}
}
}
我估计新/删除时间为1000000次
DataOri新时间[485838]
DataOri Del Time [821767]
DataMod New Time [499649]
DataMod Del Time [808503]
我可以理解DataMod New比DataOri New
慢因为DataMod New做了更多的事情,增加了计数
但我无法理解DataMod Del Time比DataOri Del Time更快
甚至DataMod Del也会做更多事情,减少计数