Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java—从另一个类访问静态全局变量是否需要更多时间?_Java_Performance_Variables_Static_Global Variables - Fatal编程技术网

Java—从另一个类访问静态全局变量是否需要更多时间?

Java—从另一个类访问静态全局变量是否需要更多时间?,java,performance,variables,static,global-variables,Java,Performance,Variables,Static,Global Variables,假设我在某个类中有一个静态变量,并且它不是通过getter访问的,那么通过将它赋给另一个类(函数内部)中的局部变量来访问它是否比直接访问它更快。如果变量是在同一个类中声明的,那么我通过哪个对象访问它呢?如果我需要在一个函数中多次使用该变量,我会问这个问题。除非您在一个紧密的循环中访问它数百万次,否则您可能永远不会注意到差异 小心过早的优化。以最合理的方式编写代码,然后在以后使用探查器(如果您确实看到性能问题)对其进行优化。如果程序可以访问变量,无论是本地变量、实例变量、类级别变量还是其他类的成员

假设我在某个类中有一个静态变量,并且它不是通过getter访问的,那么通过将它赋给另一个类(函数内部)中的局部变量来访问它是否比直接访问它更快。如果变量是在同一个类中声明的,那么我通过哪个对象访问它呢?如果我需要在一个函数中多次使用该变量,我会问这个问题。

除非您在一个紧密的循环中访问它数百万次,否则您可能永远不会注意到差异


小心过早的优化。以最合理的方式编写代码,然后在以后使用探查器(如果您确实看到性能问题)对其进行优化。

如果程序可以访问变量,无论是本地变量、实例变量、类级别变量还是其他类的成员变量,那么没有理由相信任何一个变量的访问速度都会比其他变量快。最重要的是,运行时优化器可能会注册、消除或以其他方式优化访问,尤其是频繁访问时。对程序速度更重要的是缓存位置和GC(垃圾收集)。无论变量的作用域如何,变量访问都是变量访问。

除了实际原因之外,我问这个问题也是出于好奇。“小心过早优化”是答案,尽管好奇并没有什么坏处。如果你在一个紧循环中访问变量数百万次,运行时引擎将进行优化​ 远离变量访问。第一次访问时会有少量额外的时间,因为必须加载类。但是在JIT有机会运行之后,任何类型的变量访问之间应该没有任何区别。(我认为,可能是虚拟的(继承的)方法平均需要一些额外的时间。)