求一个高效的算法!!

现在有一个byte[]数组长度已经90594

代码如下:

[code="java"]
public static String Bytes2HexString(byte[] b) {
String ret = "";
System.out.println(currentTime());
String hex = "";
for (int i = 0; i < b.length; i++) {
hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
//ret.append(hex.toUpperCase());
ret += hex.toUpperCase();
}
System.out.println(currentTime());
return ret;
}
[/code]
执行后:
2009-08-20 16:09:30
2009-08-20 16:10:13
竟然用了这么长时间。。

现在只能想到用把byte[]分成N个小的byte[]用多线程去转,不知道还没有更优的算法。。

[b]问题补充:[/b]
这个问题已经解决,

还是小弟对java不怎么熟悉啊。
[code="java"]
public static String Bytes2HexString(byte[] b) {

StringBuffer ret = "";

System.out.println(currentTime());

String hex = "";

for (int i = 0; i < b.length; i++) {

hex = Integer.toHexString(b[i] & 0xFF);

if (hex.length() == 1) {

hex = '0' + hex;

}

ret.append(hex.toUpperCase());

//ret += hex.toUpperCase();

}

System.out.println(currentTime());

return ret.toString();

}

[/code]

答案还是PHPRPC群里朋友给出的,,感谢

[b][color=red]ret += hex.toUpperCase(); [/color][/b]

不知道楼主知道不,上面这句话执行时创建了多少个String对象。时间就是花费在这上面的。

完整代码如下:
[code="java"]import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
public static String Bytes2HexString(byte[] b) {
System.out.println(currentTime());
long startTime = System.currentTimeMillis();
StringBuilder result = new StringBuilder();
String str = "";
for (int i = 0; i < b.length; i++) {
str = Integer.toHexString(b[i] & 0xFF);
if (str.length() == 1) {
str = '0' + str;
}
result.append(str.toUpperCase());
}
System.out.println(currentTime());
System.out.println("执行用的毫秒数:"
+ (System.currentTimeMillis() - startTime));
return result.toString();
}

public static String currentTime() {
    Date time = new Date();
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    String result = format.format(time);
    return result;
}

public static void main(String[] args) {
    byte[] by = new byte[90594];
    Bytes2HexString(by);
}

}[/code]

执行结果:
2009-08-20 04:45:24
2009-08-20 04:45:24
执行用的毫秒数:109
[color=red]
数组同样大,但是时间才109毫秒,只有0.1秒多一点。[/color]

这想的这种方式就已经算很优了,多线程分片处理

map/reduce算法也就这个样子