準備了以下案例:
- 字符串格式化、字符串拼接
- 預分配List的大小、預緩存int轉String的結果
- 避免不必要的裝箱拆箱
- JIT日志觀察熱點代碼、方法內聯(高性能)、循環展開
----
## 1 推薦使用+號連接字符串
### 1.1 字符串格式化
在開始之前我們先來看一段代碼,大家認為哪一個方法會快一些?
> 很多場景下需要格式化字符串,例如日志輸出。

----
運行以下程序:

----
使用 `jvisualvm` 進行CPU抽樣:
```shell
$ jvisualvm
```

由監控結果可知 `使用+號` 進行 `字符串格式化` 的耗時明顯低于`String.format` 和 `消息模板`。
----
下面是使用JMH進行基準測試后的結果(JMH的使用參見附錄):

從上面的結果可以看出append方法耗時最短。
> 原因:Formatter每次都會對輸入參數預編譯成中間格式,再進行輸出,效率非常低。
----
SLF4J采用了如下格式:
```java
LOG.info("訂單id:{} 用戶:{} 狀態:{}", id, name, status);
```
考慮到性能,可以改成以下格式:
```java
LOG.info("訂單id:" + id + "用戶:" + name + "狀態:" + status);
```