2

我有更多的“多少是太多”的问题。我有一个 Java 类,它定义了几个供外部类使用的 getter/setter(总共大约 30 个)。但是,Java 类本身在某些情况下也需要使用这些变量。

我理解在类中使用成员字段而不是 getter 方法的概念,但是在这种情况下,getter 执行一个函数(将整数取消掩码以具体化)来创建要返回的值。

因此,从性能和内存减少的角度来看,对于类中需要这些值的少数调用,我很好奇我是否应该......

一种。只需调用吸气剂

湾。在整个班级中我需要值的任何地方进行揭露,就像吸气剂一样

C。创建变量来保存这些值,通过在启动时调用所有 getter 来加载它们,并在类中使用它们(30 个左右的整数可能不会造成严重的内存风险,但我还需要添加到我的代码中以保留这些如果用户设置了新值,则更新...因为该值已更新并被屏蔽)。

任何想法表示赞赏!

4

3 回答 3

5

A. 只需调用 getter。

从性能和内存减少的角度来看,这里对不断重用相同的功能几乎没有影响。这就是代码重用的意义所在。

从高级执行/性能的角度来看,我们执行以下操作:

code: myGetter()
program : push the program state (very few cycles)
program : jump to mygetter (1 clock cycle)
program : execute mygetter (don't know your code but probably very few cycles)
program : save the result ( 1 clock cycle)
program : pop the program state ( very few cycles )
program : continue to next line of code ( 1 clock cycle)

在性能方面,黄金法则是花时间优化真正有影响的东西。对于所有一般用途,磁盘 I/O 占用的时间和资源最多。

希望这可以帮助!

于 2011-02-18T21:59:05.410 回答
2

a)致电吸气剂-正如您指出的那样,在您的情况下这是正确且干净的方式。

b) 和 c) 将是过早的优化,并且很可能弊大于利(除非您真的知道这个特定位置将成为您代码中的热点,并且您的 JIT 编译器将无法为您优化它)。

如果您确实在某个时候遇到了性能问题,那么请分析应用程序并仅手动优化热点。

于 2011-02-18T21:59:09.480 回答
1

不要重复自己是这里的指导原则。试图通过在整个类中重复相同的取消屏蔽代码来保存函数调用是灾难的根源。我只会在课堂上打电话给吸气剂。

于 2011-02-18T22:00:08.040 回答