WEB开发网
开发学院软件开发Java Java 编程的动态性,第 7 部分: 用 BCEL 设计字节... 阅读

Java 编程的动态性,第 7 部分: 用 BCEL 设计字节码

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 试一试清单 9 显示了以未修改形式第一次运行 StringBuilder 程序的结果,然后运行 BCELTiming 程序以加入计时信息,Java 编程的动态性,第 7 部分: 用 BCEL 设计字节码(10),最后运行修改后的 StringBuilder 程序,可以看到 StringBuild

试一试

清单 9 显示了以未修改形式第一次运行 StringBuilder 程序的结果,然后运行 BCELTiming 程序以加入计时信息,最后运行修改后的 StringBuilder 程序。可以看到 StringBuilder 在修改后是如何开始报告执行时间的,以及时间为何比构建的字符串长度增加更快,这是由于字符串构建代码的效率不高所致。

清单 9. 运行这个程序

[dennis]$ java StringBuilder 1000 2000 4000 8000 16000 
Constructed string of length 1000 
Constructed string of length 2000 
Constructed string of length 4000 
Constructed string of length 8000 
Constructed string of length 16000 
[dennis]$ java -cp bcel.jar:. BCELTiming StringBuilder.class buildString 
[dennis]$ java StringBuilder 1000 2000 4000 8000 16000 
Call to method buildString$impl took 20 ms. 
Constructed string of length 1000 
Call to method buildString$impl took 79 ms. 
Constructed string of length 2000 
Call to method buildString$impl took 250 ms. 
Constructed string of length 4000 
Call to method buildString$impl took 879 ms. 
Constructed string of length 8000 
Call to method buildString$impl took 3875 ms. 
Constructed string of length 16000 

包装 BCEL

BCEL 有比我在本文中所介绍的基本类操作支持更多的功能。它还包括完整的验证器实现以保证二进制类对于 JVM 规范是有效的(参见 org.apache.bcel.verifier.VerifierFactory ),一个生成很好地分帧并链接的 JVM 级二进制类视图的反汇编程序,甚至一个 BCEL 程序生成器,它输出源代码以让 BCEL 程序编译所提供的类。( org.apache.bcel.util.BCELifier 类没有包括在 Javadocs 中,所以其用法要看源代码。这个功能很吸引人,但是输出对大多数开发人员来说可能人过于隐晦了)。

上一页  5 6 7 8 9 10 

Tags:Java 编程 动态性

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接