在我的项目中,我们有一个用户定义的默认析构函数,它是为了遵循项目的一些编码标准要求而编写的。这个析构函数的类被实例化超过200次,这增加了整个响应时间,当这个析构函数被删除时,我观察到响应时间提高了28毫秒。有人能解释为什么这个时间差异,尽管这些只是默认的析构函数,但由用户定义,编译器无论如何都会调用这些函数。
在使用“用户定义的默认析构函数”时,我指的是一个空的析构函数:
~Classname(){ };
什么也不做,只是为了满足项目的标准而增加。
为了增加更多的清晰度,这个析构函数不属于以下类别:
1.Destructors声明为“虚拟”。
2.The静态类和单例类的析构函数。
使用‘’关键字创建对象的类的3.The析构函数。
使用“”关键字删除对象的类的4.The析构函数。
发布于 2012-04-24 19:27:08
我遇到了几个编译器无法正确识别空析构函数的地方
如果
is_trivial、is_pod等)都不能以您希望的方式与空析构函数一起工作。这可能会改变特定类型的某些算法或容器的实现方式。new T[]所做的每一次分配都必须为项计数分配额外的空间。此外,这可能会改变内存块的对齐方式,这会真正影响性能。对于空的destructors.,MSVC或g++都没有对其进行正确的优化。
https://stackoverflow.com/questions/10303288
复制相似问题