0

我有一个处理大量数据的 Java 工作者。它在 main() 中等待 Redis 队列,然后根据类型调用不同的函数来处理数据。

我有两个关于优化代码的问题:

  1. 拥有私有静态类变量并使用它们将数据发送到方法而不是使用函数参数会更好吗?
  2. 如果在这些经常被调用的方法中使用的变量在类上是私有的静态变量,而不是在进入方法时总是重新声明,它会加快执行时间吗?

谢谢

4

1 回答 1

2

您在谈论速度,但static变量将主要帮助您记忆。

如果您正在创建多个即时变量(非static字段)并考虑更改为static一个:

当一个类的多个实例需要访问这些实例的局部变量(实例变量)中的特定对象时,最好使该变量成为static变量,而不是让每个实例都拥有一个单独的引用。这减少了每个对象占用的空间(少一个实例变量),并且如果每个实例创建一个单独的对象来填充该实例变量,也可以减少创建的对象数量。(引自《 Java 性能调优》一书。)

如果您不创建实例变量,而只是在参数中传递一个变量:

在性能方面,应该没有区别。由于Java中的所有方法参数都是按值传递的,这意味着实际变量不会被复制过来:只有它的地址(指针 - 对变量的引用)被复制到被调用方法的参数中。

在任何情况下,static字段都会损害代码的可读性(这会使它们更难维护)。如果你真的需要某种static行为,也请考虑使用单例设计模式。

底线是:

在我看来,您的情况是:您只是传递变量(没有实例变量)。

我建议你保持这种状态。如果您更改它,使用静态字段将获得接近零(如果有)的性能增益 - 另一方面,您的代码将更难以维护/理解/调试。

于 2013-04-13T19:09:06.893 回答