Java优化策略(一):底层优化
By 冲出宇宙 from 傲尔科技(www.hour41.com)
时间:2006-11-17
注:转载请注明作者和单位。
Java语言标准从1996年发布第一版,到2000年发布第二版,再到2004年发布第三版,java语言已经经过了3次大的扩充和改进。功能是越来越多,操作是越来越复杂。显然,性能问题也就越来越突出。本文将力图从java本身分析优化java代码的各种可能。文章的数据未经特别说明,均来自于jdk5.0版本。
1 Java基本数据类型时间分析
因为单独测试一个基本类型的变量很不精确,无论你怎么测,误差都很大。所以,我们只能大致的给出速度上的差别。
变量的访问速度和访问的类型是有很大关系的,一般我们直接使用2个变量的操作时间来衡量变量的访问速度。显然,byte + byte的速度和int + int的速度肯定是不同的。我们对以下几类基本操作进行了速度测试:加减(+,-)、乘(*)、除(/)、移位(>>,<<,>>>,<<<)和布尔运算(|,&,^)。为了保证数据的有效性,测试得到了3份结果,取平均值,得到下面的各个基本数据类型的大致时间花销比例如下表(以下均以此作为参考对象,一个时间单位在我的机器上大约是600ps,即0.6ns,也就是6e-10秒):
加减
乘
除
移位
布尔运算
byte
1.5
6
50
1.5
1
short
1.2
5.5
50
1.2
1
int
1
5
48
1
1
long
5
10
140
8.5
2
float
15
600
350
-
-
double
15
600
350
-
-
从表中我们可以看出:
1. int的运算速度最快,short次之,byte再次之,long再次之。float和double运算速度最慢。
2. 除法比乘法慢的太多,基本上除法是乘法的9倍时间。当然,除了浮点型外。根据intel cpu的参考数据,乘法计算时间是移位运算的4-5倍是比较正常的。
3. long类型的计算很慢,建议一般少使用它。
4. double运算速度和float相当;
5. 浮点的乘法比除法要慢。但是,这个结果并不能真正说明问题。这个结果只是一个一般
相关文档:
许多时候我们需要用到线程 比如希望一个附加的功能 不要影响整个流程的功能,比如某个流程需要加入日志,但是不希望记录日志的功能影响整个流程的性能,不能因为记录日志把整个流程给卡住了。在这个种情况下,我们需要使用线程。让记录日志在单独一个线程里面跑,就不会影响都其他流程了。
  ......
最近成立了一个JAVA 群 想跟大家一块交流 41912406 ; 感觉好久没看过JAVA了 ,都有些生疏了。现在在一家黄金投资公司工作,虽说工作环境还行,但内心里好像并不喜欢这个,以后还是找个软件公司干为好。在这个行业能对世界经济了了解很多,我想这对我以后会有帮助的,先在这干着,长点知识与经验也不错。 ......
首先要有jxl类库。
程序如下:
import java.io.*;
import jxl.*;
public class ExcelToSql {
public static void main(String args[])
{
try
{
Workbook book= Workbook.getWorkbook(new File("D:\\workspaceuse6\\foundation\\test\\com\\gres ......
1 mysql存储大容量的二进制文件的格式是blob,其实除了图片还可以存别的
2 要向数据库存储二进制的文件一定要把要存储的数据转换成二进制流
废话就不多说了,大家看看代码很容易明白,先来看一个app程序,当然首先您要在数据库中先建立一个用于保存图片的表和相应的列,数据格式为blob
package ......