易截截图软件、单文件、免安装、纯绿色、仅160KB

不错的经典文章:java提速

Java语言特别强调准确性,但可靠的行为要以性能作为代价。这一特点反映在自动收集垃圾、严格的运行期检查、完整的字节码检查以及保守的运行期同步等等方面。对一个解释型的虚拟机来说,由于目前有大量平台可供挑选,所以进一步阻碍了性能的发挥。
“先做完它,再逐步完善。幸好需要改进的地方通常不会太多。”(Steve McConnell的《About performance》[16])
本附录的宗旨就是指导大家寻找和优化“需要完善的那一部分”。
D.1 基本方法
只有正确和完整地检测了程序后,再可着手解决性能方面的问题:
(1) 在现实环境中检测程序的性能。若符合要求,则目标达到。若不符合,则转到下一步。
(2) 寻找最致命的性能瓶颈。这也许要求一定的技巧,但所有努力都不会白费。如简单地猜测瓶颈所在,并试图进行优化,那么可能是白花时间。
(3) 运用本附录介绍的提速技术,然后返回步骤1。

使努力不至白费,瓶颈的定位是至关重要的一环。Donald
Knuth[9]曾改进过一个程序,那个程序把50%的时间都花在约4%的代码量上。在仅一个工作小时里,他修改了几行代码,使程序的执行速度倍增。此
时,若将时间继续投入到剩余代码的修改上,那么只会得不偿失。Knuth在编程界有一句名言:“过早的优化是一切麻烦的根源”(Premature
optimization is the root of all
evil)。最明智的做法是抑制过早优化的冲动,因为那样做可能遗漏多种有用的编程技术,造成代码更难理解和操控,并需更大的精力进行维护。
D.2 寻找瓶颈
为找出最影响程序性能的瓶颈,可采取下述几种方法:
D.2.1 安插自己的测试代码
插入下述“显式”计时代码,对程序进行评测:
long start = System.currentTimeMillis();
// 要计时的运算代码放在这儿
long time = System.currentTimeMillis() - start;

用System.out.println(),让一种不常用到的方法将累积时间打印到控制台窗口。由于一旦出错,编译器会将其忽略,所以可用一个“静态最
终布尔值”(Static final
boolean)打开或关闭计时,使代码能放心留在最终发行的程序里,这样任何时候都可以拿来应急。尽管还可以选用更复杂的评测手段,但若仅仅为了量度一
个特定任务的执行时间,这无疑是最简便的方法。
System.currentTimeMillis()返回的时间以千分之一秒(1毫秒)为单位。然而,有些系统的时间精度低于1毫秒(如Windows PC),所以需要重复n次,再将总时间除以n


相关文档:

JAVA读书笔记(三)

      String类没有提供修改一个已存在的字符串中的某一个字符的方法,例如:String greeting="Hello";如果想把greeting变成"Help!",不能直接把greeting的最后一位变成'p'和'!',而是保留需要的字符串,将替换的字符串通过"+"连接在一起。
      greeting=greeting.su ......

java反射机制学习

     反射机制:所谓的反射机制就是java语言在运行时拥有一项自观的能力。通过这种能力可以彻底的了解自身的情况为下一步的动作做准备。下面具体介绍一下java
的反射机制。这里你将颠覆原来对java的理解。
      Java的反射机制的实现要借助于4个类:class,Constructor,F ......

Java中的volatile关键字

我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。
这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下
volatile关键字的使用变得非常重要。在当前的 ......

java mysql连接数据库代码

package com.lovo.cq.shopping10_1.common;
import java.sql.*;
public class DbUtil {
private PreparedStatement pstmt = null;
private Connection con = null;
public DbUtil() {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://l ......

JAVA常用方法

01、让控件得到焦点
    用.requestFocus();可以获得控件焦点。
    nextFocus()则可进入下一个焦点。
02、将String类型转为int类型
    Integer.parseInt(String);
03、将Integer类型转为String类型
    String.valueOf(Integer); ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号