编写Java程序如果只用静态方法和非引用类型,性能能否大幅提高?
发布网友
发布时间:2022-04-25 06:17
我来回答
共1个回答
热心网友
时间:2023-11-02 10:46
首先,结构体和类带给我们最大的好处,是可以将基本的数据类型组合起来,得到我们业务所需要的数据类型。然后才有绑定动作、继承、多态之类。Java中只有类没有结构体,因此我们总是不可避免的使用类而创建对象。
我们再假设Java引入了某种语法可以帮助我们解决上述的问题,并且可以如题主所说只使用静态方法和非引用类型。可以分析出,这样做的好处有两个,避免类成员方法调用,避免在堆上创建和回收对象。
避免成员方法调用,按照C++里面的差别,this调用约定和标准调用约定的区别只是this调用约定在调用之前将this指针存入ecx中,仅仅多一条指令的差别并没有带来那么多的影响。至于避免堆上对象创建和垃圾回收器回收,而使用非引用类型(即在栈上分配),普林斯顿大学著名的编译器理论研究者A.W. Appel在1987年就指出Garbage collection can be faster than stack allocation(垃圾回收可以比栈式内存分配速度快),尤其在大内存(按照当时的条件,64M已经算是大内存)条件下,显式的手工释放内存开销会比由垃圾回收器一次性批量释放要大。