【发布时间】:2011-06-04 14:44:54
【问题描述】:
有没有一种简单的方法可以检查我的模板是否已优化?使用#define HIDE_IT 后,运行代码如下。我确信这段代码已经过优化,所以我从定义Property<SomeType> 中得到了 0 开销,但我喜欢检查是否可能(无需进入汇编。在优化器通过后,琐碎的代码很难阅读)
template <class T>
class Property {
T v;
Property(Property&p) { }
public:
Property() {}
T operator=(T src) {
v = src; return v;
}
operator T() const {
return v;
}
T operator->() { return v; }
T operator++() { return ++v; }
template<class U>
T operator+=(U u) { return v+=u; }
T get() { return v; }
}
【问题讨论】:
-
除非性能分析显示它是性能瓶颈,否则我什至不会担心。
-
@Anycorn:很好!我没有看到任何提及它!
-
编译器可能会同时创建内联版本和轮廓版本,盯着库二进制文件也无济于事。通过汇编使用调试器会让您知道生成了哪些指令。
-
你为什么在乎?如果编译器已经内联了所有的函数调用就好了。如果不是什么大不了的。编译器完成它的工作并生成它可以生成的最好的代码。您应该只担心您的工作(即编写尽可能合乎逻辑的可维护代码)。只要逻辑是等价的,就没有什么好担心的。
-
@Martin:实际上运行这个文件我的应用程序使用了大约 620mb 的内存,这是在优化了其中的一些内容之后。
标签: c++ templates optimization