网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  调整javatm 的i/o性能(二)(zt)     
  文章作者:未知  文章来源:水木森林  
  查看:91次  录入:管理员--2007-11-17  
 
  格式化开销


实际上,将数据写入文件只是输出开销的一部分。另外一个巨大的开销是数据的格式 化。考虑下面的三个例 子,要求其输出如下的行:


the square of 5 is 25


方法 1


第一种方法是简单地输出一个固定串,以得到内部i/o开销的概念:


      public class format1 {

          public static void main(string args[]) {

              final int count = 25000;



              for (int i = 1; i <= count; i++) {

                  string s = "the square of 5 is 25/n";

                  system.out.print(s);

              }

          }

      }

方法 2


第二种方法采用带"+"的简单格式化:


      public class format2 {

          public static void main(string args[]) {

              int n = 5;



              final int count = 25000;



              for (int i = 1; i <= count; i++) {

                  string s = "the square of " + n + " is " + n * n + "/n";

                  system.out.print(s);

              }

          }

      }

方法 3


第三种方法使用了java.text包中的类messageformat:


      import java.text.*;



      public class format3 {

          public static void main(string args[]) {

              messageformat fmt =

                  new messageformat("the square of {0} is {1}/n");

              object values[] = new object[2];



              int n = 5;



              values[0] = new integer(n);

              values[1] = new integer(n * n);



              final int count = 25000;



              for (int i = 1; i <= count; i++) {

                  string s = fmt.format(values);

                  system.out.print(s);

              }

          }

      }

这些程序产生相同的输出,运行时间为:



      format1    1.3

      format2    1.8

      format3    7.8





最快和最慢之间的差距为6比1。如果该格式没有进行预编译,并且采用了便利的静态方法,第三个程序将更 慢。

方法 4


使用messageformat.format(string, object[])方法如下:


      import java.text.*;



      public class format4 {

          public static void main(string args[]) {

              string fmt = "the square of {0} is {1}/n";

              object values[] = new object[2];



              int n = 5;



              values[0] = new integer(n);

              values[1] = new integer(n * n);



              final int count = 25000;



              for (int i = 1; i <= count; i++) {

                  string s = messageformat.format(fmt, values);

                  system.out.print(s);

              }

          }

      }

这比前一个例子花费的时间还要长1/3。


方法3比1、2慢一点,并不意味不应该采用它。但是,应该明白在时间上的代价。


在国际化语言环境中,消息的格式是非常重要的,涉及到这个问题的应用程序通常从一个资源文件中读取该 格式,然后使用它。


随机存储


randomaccessfile是用于对文件进行随机i/o存储(在字节层次上)的一个java类。该类提供了一个与c/c++中 相似的搜索方法,以将文件指针移动到任意位置,然后就可以对从那里开始的字节进行读或写了。 该搜索方法访问底层的运行系统,正因为如此,开销可能非常昂贵。一个稍微廉价的替代方法是,在 randomaccessfile顶部设置自己的缓冲,并且实现对字节的直接读取方法。用于读取的参数是所需字节的字节 偏移量。下面的例子显示了这是如何进行的:


      import java.io.*;



      public class readrandom {

          private static final int default_bufsize = 4096;



          private randomaccessfile raf;

  &
 
 
上一篇: 调整 java i/o 性能    下一篇: 调整javatm 的i/o性能(三)(zt)
  相关文档
教程/系统编程 在java中处理日志记录 11-16
使用java实现网络传输数据的压缩 11-16
hibernate程序性能优化的考虑要点 11-17
servlet处理post请求 11-17
java入门:java多线程程序设计详细解析 03-04
开发设计模式——asp.net中实现观察者模式 (1) 09-12
j2ee1.4新特性之jdbc3.0的新特性 11-17
高级:编写多线程java应用程序常见问题 02-25
数据类型 11-17
jrarrow1.0(自动化生成代码) 11-17
利用java reflection(反射)原理,在hibernate里面实现对单表、.. 11-17
解决j2ee系统应用性能问题常用优化项目 11-16
java服务器 感受开源热潮 11-17
在java应用程序中创建图像 11-16
java servlet基本方法介绍 java servlet api 11-16
使用工作流引擎wfmopen中的陷井 11-17
评估java在商务集成方面的特性 11-17
spring在mvc层解决jpa的缓迟加载问题 11-17
java培训热潮涌动 11-17
让你知道:java 文件的缩进排版 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息