程序中的变量有3种,局部变量,实例变量,类变量,他们在使用时,哪种效率最高呢,看下面的例子
public class StackTest
{
private int intValue;
private static int staticValue;
public static final int times = 1000000000;
public static void main(String[] args)
{
StackTest s = new StackTest();
long start = System.currentTimeMillis();
//code here....
long end = System.currentTimeMillis();
long time = end -start;
System.out.println("用局部变量的时间"+time);
//后面省略
}
public void stack()
{
int j = 0;
for (int i = 0; i < times; i++)
{
j+=i;
}
}
public void field(){
for (int i = 0; i < times; i++)
{
intValue+=i;
}
}
public void staticField(){
for (int i = 0; i < times; i++)
{
staticValue+=i;
}
}
}
打印结果:
用局部变量的时间1485
用实例变量的时间2390
用静态变量的时间2125
如果全部改为局部变量,会是这样:
public void stack()
{
int j = 0;
for (int i = 0; i < times; i++)
{
j+=i;
}
}
public void field(){
int j = intValue;
for (int i = 0; i < times; i++)
{
j+=i;
}
}
public void staticField(){
int j = staticValue;
for (int i = 0; i < times; i++)
{
j+=i;
}
}
运行结果:
用局部变量的时间1328
用实例变量的时间1344
用静态变量的时间1359
代码的运行速度有很大提升,不要瞧不起这些小的优化,积少成多,会对系统有很大的性能提升
当然实例和类变量,该用还给用,如果在循环里面出现了,可以考虑改进的方法,把他们先编程局部变量,提高速度。
分享到:
相关推荐
优化的目的是提高程序的性能和代码的效率,但是优化过程可能会影响到变量的存储方式和生命周期,特别是局部变量。 在优化设置为Low时,默认情况下编译器还保留了足够的调试信息,以确保开发者可以在Watch窗口中观察...
5. **函数式编程**:在Java 8及更高版本中,`final`在函数式编程中也扮演了重要角色,因为lambda表达式只能引用`final`或effectively final的变量。 描述中提到的博客链接可能提供了更深入的分析和示例,包括可能...
在实际编程中,合理地使用成员变量和局部变量能够帮助我们更好地组织代码,使程序逻辑更加清晰。同时,理解这两者的内存管理机制也有助于避免内存泄漏和提高程序的运行效率。在面向对象设计中,合理地分配状态到对象...
MATLAB自定义函数及局部变量 MATLAB是一种高级的编程语言,广泛应用于科学计算、数据分析...MATLAB自定义函数和局部变量是MATLAB编程的基础知识,掌握这些知识点可以帮助用户更好地使用MATLAB进行科学计算和数据分析。
Java中的成员变量与局部变量是编程中非常基础且重要的概念,它们在程序设计中起到不同的作用,理解并熟练掌握这两者之间的区别对于编写高质量的Java代码至关重要。 成员变量(Member Variables)是类的属性,它们...
2. 更重要的是,由于`rotateloop`是内部函数,字符串形式的调用无法正确捕获其所在的作用域,因此不能访问到`angle`这个局部变量。 为了解决这些问题,我们可以改变`setTimeout`的调用方式,使其直接接收函数对象而...
更进阶的是,全局变量和局部变量的运用。全局变量在整个项目中都可访问,用于存储和传递数据,尤其适用于跨页面的数据共享。例如,在用户注册过程中,可以设置一个全局变量存储注册状态,无论用户跳转到哪个页面,都...
本地变量,也称为线程局部变量,为每个线程提供了一个独立的变量副本。这意味着每个线程都拥有自己的变量实例,不会与其他线程共享,从而避免了数据竞争的问题。在Java中,可以使用`ThreadLocal`类来创建线程本地...
在C语言中,如果一个局部变量与全局变量具有相同的名称,则局部变量在该函数内部具有更高的优先级。这意味着函数将使用局部变量而不是全局变量。例如: ```c int count; // 全局变量 int main() { count = 10; ...
18. 局部变量优化:在方法内部递增局部变量是最快的方式,接近直接调用局部变量的速度。 19. 全局变量与局部变量:递增全局变量比递增局部变量慢约2倍。 20. 对象属性操作:递增对象属性比递增局部变量慢3倍。 21...
局部变量的读写状态可以通过快捷菜单进行切换,读端子的边框比写端子的边框更粗(图8-2和8-3)。值得注意的是,局部变量只在其所在VI运行时存在,依赖于面板对象,且占用内存,过多的局部变量尤其是大数组会降低程序...
作用域不仅影响着代码的执行效率,更是解决bug的关键所在。本文将从JavaScript权威指南出发,深入探讨变量作用域的相关知识点,包括全局作用域、局部作用域、以及闭包等高级概念。 #### 二、全局作用域与局部作用域...
- **实践**: 在循环等频繁使用的代码块中,尽量避免多次访问属性,转而使用局部变量来存储属性值。 - **示例**: 原始代码: ```vb Dim intCon As Integer For intCon = 0 To UBound(SomeArray()) Text1.Text =...
10. **函数与正则表达式**:尽可能用函数替代正则表达式完成相同功能,如`str_replace`比`preg_replace`更快,而`strtr`的效率更高。 11. **数组操作**:对于短字符串和数组,考虑编写单独的替换代码,逐个处理字符...
栈则是自动内存管理,用于存储函数的局部变量,由编译器自动分配和回收,效率较高,但空间有限。 4. 内存错误 内存错误主要包括内存泄漏和溢出。内存泄漏是由于未释放已分配的堆内存造成的,当程序结束,这部分...
【单片机C语言的高效率】主要关注的是如何在AVR系列单片机上使用C语言编写更高效、更快的代码。AVR单片机以其优化的硬件架构和C编译器支持,使得在高级语言环境下仍能实现接近汇编语言的性能。 **硬件架构的优化** ...
11. **字符串替换函数**:`str_replace`比`preg_replace`快,而`strtr`的效率更高。 12. **优化替换操作**:对于短字符串,可以考虑写一个循环替换代码,逐字符处理,而不是一次性处理整个数组。 13. **使用switch...
11. **字符串替换函数比较**:`str_replace`比`preg_replace`快,而`strtr`的效率更高。 12. **数组替换策略**:对于较短的查询和替换字符串,编写额外的代码逐个字符处理,而非一次性处理整个数组,可以提高性能。...
`str_replace`函数虽然已经很快,但`strtr`函数的效率更高,约为前者的四倍。对于简单的字符串替换场景,优先考虑使用`strtr`。 #### 12. 分批处理字符串替换 如果需要进行大量的字符串替换操作,可以考虑编写额外...
系统变量在CAD中分为几种类型,包括全局变量、局部变量和环境变量。全局变量在整个CAD会话中有效,对所有打开的图形都有影响;局部变量只在当前图形或块定义中有效;环境变量则与操作系统或特定应用程序环境相关联。...