Java程序性能和速度优化实例

原创 2001年04月28日 09:26:00

          Java程序性能和速度优化实例


   David Lee


例一:应用具有I/O Buffer功能Class
import java.io.*;
 
public class IoTest {
public static void main(String args[]) {
 
try {
FileReader fr = new FileReader(args[0]);
BufferedReader br = new BufferedReader(fr);
 
while ( br.readLine() != null ) {
System.out.println(" The file content are :" + br.readLine());
}
fis.close();
} catch ( IOException ioe ) {
System.out.println("The I/O exception is " + ioe);
}
 
}
 
}
 
在上例中,程序使用了具有Buffer功能的Class,使得Disk I/O的读取速度大大提高。BufferedReader 是取代DataInputStream 而提高读写速度的Java Class。在新的Java版本中,已不建议使用 DataInputStream,因为其读写是基于字符为单位的。
 
例二:字符串运算处理
 
public class StringOperation {
public static void main(String args[]) {
 
String sqlQuery = null;
String sqlCondition = " conditionC = conditionD ");
 
StringBuffer sb = new StringBuffer();
 
sb.append("select * from database table where ");
sb.append(" conditionA = conditionB and ");
 
if ( ! sqlCondition.equals(null) {
sb.append(sqlCondition);
} else {
sb.append(" conditionE = conditionF ");
}
 
sqlQuery = sb.toString();
 
// Then connect to the database then excute the database query
// .......
 
}
 
}
 
在上例中,使用StingBuffer class来完成数据库查询建立,避免使用String class的"+="操作,以减少JVM在内存中创建新的对象,占用资源,增加JVM回收资源负担。读者可以使用Java Proflier功能来具体比较使用不同的String操作,JVM需要完成多少资源回收和运行时间。因此在JVM中对String直接进行"+="是非常昂贵的运算。
例三:处理昂贵的数据库初始化
 
目前许多网站可以透过Web服务器查询数据库,如何提高数据库查询速度成为许多程序员关注的问题。在Java Servlets或JSP中可以通过init() 或Jspinit()来实现,以下是一具体Java Servlet与数据库对话实例。
  
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
 
public class DatabaseServlet extends HttpServlet {
 
public void init( ServletConfig conf) throws ServletException {
super.init(conf);
 
Connection conn = null;
 
try {
Class.forName("sun.jdbc.odbc.JdcOdbcDriver");
Conn = DriverManager.getConnection("jdbc:odbc:yourDSN,"","");
} catch ( SQLException sqle ) {
System.err.println("your error exception is " + sqle);
} catch ( ClassNotFoundException cnfe ) {
System.err.println("your error exception is " + cnfe);
}
}
 
public void doGet( HttpServletRequest req, HttpServletResponse res) throws
ServletException, IOException {
res.setContentType("text/html");
ServletOutputStream out = null;
 
// Your HTML formatter
out.println(" Your HTML");
 
try {
 
Statement stmt = conn.creatStatement();
ResultSet rs = stmt.excuteQuery("select * from yourDatabasetable ");
 
while ( rs.next() ) {
// Processing your data
}
} catch ( SQLException sqle ) {
out.println("The SQL error is " + sqle);
}
 
// output your processing result to HTML page
 
out.println(" your HTML");
 
rs.close();
stmt.close();
 
}
 
public void destroy() {
try {
conn.close();
} catch ( SQLException sqle ) {
System.err.println("your SQL error is " + sqle);
}
}
 
}
 
在上例中,由于Java Servlet运行机制的特点,将昂贵的数据库初始化运算在整个Servlet运行中仅只调用一次的init()中完成,以减少不必要的重复性数据库运算。读者可以根据应用的具体情况,甚至将数据库的Statement和ResultSet部分移至init()中完成,或者调用PreparedStatement与CallableStatement来优化数据库的运算。同时,对数据库的连接的关闭由destroy()一次性完成。

Java程序性能和速度优化实例

 例一:应用具有I/O Buffer功能Class   import java.io.*;   public class IoTest  {    public static void main(St...
  • alex197963
  • alex197963
  • 2007年04月12日 17:26
  • 543

Java程序性能和速度优化实例

例一:应用具有I/O Buffer功能Class  import java.io.*;   public class IoTest  {    public static void main(Stri...
  • i_sky_studio
  • i_sky_studio
  • 2008年03月01日 15:11
  • 306

第五章 优化程序性能

写程序的最主要目标就是使它在所有可能的情况下都正确工作。 程序员必须写出“清晰简洁”的代码,读懂、理解、修改   代码。        编写高效程序: 1.          选择合适的算法和数据结构...
  • yvhqbat
  • yvhqbat
  • 2015年10月11日 11:45
  • 726

优化程序性能 计算机系统结构 深入理解计算机系统

优化程序性能 1编写高效程序:合适的数据结构和算法,编译器能够有效优化以转换为高效可执行代码的 源码,对处理量特别大的计算将任务分为多个部分; 程序优化:消除不必要的内容(函数调用,条件测试,存...
  • u013240812
  • u013240812
  • 2015年10月23日 14:33
  • 751

优化Python程序性能的15个小技巧

如果你已经熟悉Python,本文介绍的小技巧将在优化Python程序的性能方面有一定作用。 1、使用profile和timeit模块来测试程序的性能。 2、减少函数调用的次数。 ...
  • luckyjoy521
  • luckyjoy521
  • 2014年04月06日 17:08
  • 1198

程序性能优化-深入理解计算机系统

转自http://blog.sina.com.cn/s/blog_7572b5e50101qeja.html 1.对寄存器的访问的优化 寄存器访问优化的核心是尽量避免打断流水线. a...
  • le119126
  • le119126
  • 2015年04月23日 21:10
  • 667

浅谈优化程序性能(上)

前言 我们知道,多项式定义为: 在几何学中,多项式是最简单的平滑曲线。简单是指它仅由乘法及加法构成,平滑是因为它类同口语中的平滑,以数学术语来说,它是无限可微,即它的所有高次微分都...
  • u013948190
  • u013948190
  • 2015年08月03日 11:50
  • 336

优化程序性能的几个方法(来自于《深入理解计算机系统》)总结

这部分的代码出自《深入理解计算机系统》(CS:APP)第五章,其目的是通过手工改变代码结构,而不是算法效率和数据结构优化,提高执行效率。有些编译器在某些优化选项下可能会做出类似的改动。   为了...
  • benpaobagzb
  • benpaobagzb
  • 2016年03月03日 17:34
  • 435

Java程序性能之三

Java 2D提供了许多cool功能,用Java2D能做许多图形特效,合理使用一些API可以帮助实现和c++类似的性能: GraphicsConfiguration.createCompatib...
  • zfqjava
  • zfqjava
  • 2007年05月14日 16:00
  • 1061

网站加载速度优化的14个技巧

网站加载速度优化的14个技巧 下面我将介绍几个优化网站加载网页速度的简单方法,一起来看一下。 1.服务器响应时间 即使网站已经格外优化,但是除非服务器响应时间非常快,否则就不会有...
  • yueguanyun
  • yueguanyun
  • 2017年03月02日 09:38
  • 1810
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java程序性能和速度优化实例
举报原因:
原因补充:

(最多只允许输入30个字)