【发布时间】:2016-06-08 18:38:29
【问题描述】:
我有一门课,例如:
class Vehicle {
public:
Vehicle(int handle);
// Methods that use the handle e.g.:
Color getColor() {
return VEHICLE::GET_COLOR(handle);
}
protected:
int handle;
};
我不知道这个例子对你是否有意义,但我围绕这些句柄构建了几个包装类,以获得更 OOP 风格的编码。
所以我现在的问题是,当我将 Vehicle 对象传递给仅将车辆句柄传递给其他方法时,会有多少开销?
【问题讨论】:
-
不太可能,您可能会通过
handle引入开销 -
您需要更具体的数据。记住 Hoare 的格言:过早的优化是万恶之源。使用分析器而不是猜测来衡量性能。 (其他因素也会起作用,例如您是按值传递还是按引用传递、实际类有多大、您使用的优化设置等)
-
Knuth:“程序员浪费大量时间思考或担心程序中非关键部分的速度,而在考虑调试和维护时,这些提高效率的尝试实际上会产生强烈的负面影响. 我们应该忘记小的效率,比如大约 97% 的时间:过早的优化是万恶之源。但我们不应该放弃关键的 3% 的机会。”
-
您将通过比较编译器为您的平台为每个实现生成的目标代码来查看开销。
标签: c++ performance class oop