[英]Improving method performance java
更好的解決方案?
public String toString(byte[] array) {
if (array == null)
return "null";
StringBuilder sb = new StringBuilder(256).append('[');
for (int j = 0; j < array.length; ++j) {
sb.append(array[j]);
if (j != array.length - 1)
sb.append(", ");
}
return sb.append(']').toString();
}
更好的解決方案? 如果可能的話,可以使用更快速的解決方案來執行此方法
Arrays.toString()
返回指定數組的String表示形式,也許就足夠了:
String s1 = Arrays.toString(byte);
下一行:
sb.append(array[j]);
有點昂貴,因為它涉及將int
轉換為字符表示形式,同時跟蹤工作緩沖區等。
如果您可以得到這樣的結果:
[-123, 123, 002, 000,-022, 127]
代替
[-123, 123, 2, 0, -22, 127]
然后下面的方法在我的機器上快了2到3倍:
public String toString(byte[] array) {
final char DIGITS[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
if (array == null) {
return "null";
}
char[] res = new char[(array.length * 5) + 1];
int abs;
int pos = 0;
res[pos++] = '[';
for (int i = 0; i < array.length; i++) {
if (array[i] < 0) {
abs = - array[i];
res[pos++] = '-';
} else {
abs = array[i];
res[pos++] = ' ';
}
res[pos++] = (abs >= 100 ? '1' : '0');
int rest = (abs % 100);
res[pos++] = DIGITS[rest / 10];
res[pos++] = DIGITS[rest % 10];
res[pos++] = ',';
}
res[res.length - 1] = ']';
return new String(res);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.