假设我需要访问变量'asdf'约1000次。
什么会更快:创建对象Foo并将其作为参数传递给bar构造函数并通过getter访问它或静态访问Foo的数字。或者那两种方法具有相同的性能?
Class Foo {
public int asdf;
}
Class Bar {
Foo foo;
Bar(Foo foo1) {
this.foo = foo;
}
public void funcBar() {
foo.asdf;
}
}
Class Foo {
public static int asdf;
}
Class Bar {
public void funcBar() {
Foo.asdf;
}
}
答案 0 :(得分:7)
1000次没什么。
因此,您编写了使用直接和“干净”方式完成工作的代码。
担心好的设计,而不是浪费时间来解决不存在的性能问题。
答案 1 :(得分:2)
作为对你的问题的纯粹回答,根据SO用户Mike Nakis的说法,静态调用将是最快的,其次是非虚拟调用,然后是虚拟调用。你可以看到他的回答here。仍然,寻求代码可读性。拥有清晰,可维护的代码比压缩每一盎司性能的代码更好,但其他开发人员无法理解。在许多情况下,检索的速度可以忽略不计。