前段时间我构建了一个类 Vector ,我经常使用它。随着时间的推移,我正在添加越来越多有趣且有用的方法,例如normalize,projection et cetera。课程开始变得很大,可能会变得更大。
由于我正在使用这个类来计算1000多个对象的位置和移动,并且我每1/60秒创建一个新实例,我开始担心性能和/或内存可能是个问题。
我曾尝试在Google上寻找答案,但只找到了引用C ++的this,但答案仍然适用?
否则我的问题是:是否有任何重大的性能问题?我应该尝试让我的班级变小,而不是创建函数吗?使用大型课程还有其他重要缺点我应该注意吗?
答案 0 :(得分:2)
类的(代码)大小没有(直接)性能后果。
此外,只要您没有或期望遇到性能问题,就不要专注于优化(主要是优化会导致更多工作,有时更难以阅读/维护代码)。仅在需要时优化性能。最初,始终专注于小班/可读性/可维护性。特别是最后一个看起来很重要,因为你定期添加功能。
您已经提供了一些功能区域,例如投影,标准化。也许你可以将它们移动到其他类或辅助类,如果它们不需要任何数据的话。
也许你可以使用继承来分割你的类,如果有一些特定的矢量类型,或者你可以使用策略模式来执行不同类型的算法。但也许你只有几百个可以在矢量上使用的函数;在这种情况下,使用辅助方法,使用它传递向量,并将每个方法放在最好的帮助程序类中。
例如规范化:
public abstract VectorNormalization
{
public void Normalize(Vector v)
{
.. do something with v
}
public void NormalizeDifferent(Vector v)
...
}
你可以通过
来调用它Vector v = Vector(3,4);
VectorNormalization.Normalize(v);
关于表现。要调用Normalize函数:
只有第一个会被改变,因为在一个大班级中也需要第二和第三。
通过在需要的地方优化算法,您可以更好地赢得性能。
顺便说一句,