Java中利用final关键字inline编译优化真的有效吗?
为寻求java代码的性能优化,从网上搜到利用final关键字进行编译时inline优化的方法,但是真的有效吗?实际测试中发现未必,甚至性能影响巨大,最终放弃了使用final优化的想法。
测试环境:Windows XP SP2,JDK 1.6.0_15-b03,Eclipse 3.5 SR1。
package test;
public class Test {
public static void main(String[] args) {
int loop = 5000000;//测试500万循环
long start;
String num = "0";
//----第一遍----
start = System.currentTimeMillis();
for (int i = 0; i < loop; i++) {
Class1 c1 = new Class1();
c1.setF1(num);
c1.getF1();
}
System.out.println((System.currentTimeMillis() - start) + "ms");
start = System.currentTimeMillis();
for (int i = 0; i < loop; i++) {
Class2 c2 = new Class2();
c2.setF1(num);
c2.getF1();
}
System.out.println((System.currentTimeMillis() - start) + "ms");
//----第二遍----
start = System.currentTimeMillis();
for (int i = 0; i < loop; i++) {
Class1 c1 = new Class1();
c1.setF1(num);
c1.getF1();
}
System.out.println((System.currentTimeMillis() - start) + "ms");
start = System.currentTimeMillis();
for (int i = 0; i < loop; i++) {
Class2 c2 = new Class2();
c2.setF1(num);
c2.getF1();
}
System.out.println((System.currentTimeMillis() - start) + "ms");
//----第三遍----
start = System.currentTimeMillis();
for (int i = 0; i < loop; i++) {
Class1 c1 = new Class1();
c1.setF1(num);
c1.getF1();
}
System.out.println((System.currentTimeMillis() - start) + "ms");
start = System.currentTimeMillis();
for (int i = 0; i < loop; i++) {
Class2 c2 = new Class2();
c2.setF1(num);
c2.getF1();
}
System.out.println((System.currentTimeMillis() - start) + "ms");
}
}
class Class1 {
private String f1;
public String getF1() {
return f1;
}
public void setF1(String f1) {
this.f1 = f1;
}
}
final class Class2 {
private String f
相关文档:
Java学习从入门到精通
一、 JDK (Java Development Kit)
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......
Java NIO API详解
在JDK
1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞(blocking)API。对于大多数应用来说,这样的API使用很方
便,然而,一些对性能要求较高的应用,尤其是服务端应用,往往需要一个更为有效的方式来处理IO。从JDK 1.4起,NIO
API作为一个基于缓冲区,并能提供非阻塞(non-blo ......
Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。本文主要集合了不同数据库的连接方式。
一、连接各种数据� ......
JNI是Java Native Interface的缩写,通过使用native方法,Java可以调用本地C/C++子程序。声明一个本地子程序的方法是:在方法名前添加native修饰,如
public native void myfun();
调用该子程序的方法为:
static{
System.loadLibrary("myfun");
}
在Windows上,上面的myfun即指包含用C/C++写的my ......
1下面哪个是正确的类声明?假设每一段文本都做为一个名称为Fred.java的文件的全部内容? a
a).
public class Fred{
public int x = 0;
public Fred (int x){
this.x=x;
}
}
b).
public class fred{
public int x = 0;
public Fred (int x){
this.x=x;
}
}
c).
public class ......