首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 高效構建 0-10MB 測試字串:StringBuilder 最佳實踐

     編輯:Java 相關知識

場景

單元測試、效能基準測試、網路協議模擬等需生成指定大小字串/位元組陣列。

推薦做法:StringBuilder

StringBuilder sb = new StringBuilder(10 * 1024 * 1024); // 預分配 10MB 容量,避免擴容
for (int i = 0; i < 10 * 1024 * 1024; i++) {
    sb.append('a');
}
String str = sb.toString(); // 獲取完整字串
  • 預分配容量 new StringBuilder(initialCapacity) 避免多次擴容複製,大幅提升效能。
  • append(char) 比 append(String) 更輕量。

截取指定大小

// 取前 1MB
byte[] oneMB = str.substring(0, 1024 * 1024).getBytes(StandardCharsets.UTF_8);

替代方案:位元組陣列直接填充

byte[] bytes = new byte[10 * 1024 * 1024];
Arrays.fill(bytes, (byte) 'a');
// 取 1MB
byte[] oneMB = Arrays.copyOfRange(bytes, 0, 1024 * 1024);
  • 跳過字串編碼/解碼,效能最高,記憶體佔用最低。
  • 適用於網路發送原始位元組場景。

效能對比(參考)

方式耗時記憶體峰值
StringBuilder 預分配~50ms~20MB
byte[] Arrays.fill~5ms~10MB
String 連接 (+=)極慢(O(n²))極高

總結

測試資料生成首選 byte[] + Arrays.fill;需字串操作時用 StringBuilder 並預分配容量。嚴禁在迴圈中使用 += 拼接字串。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved