String.isEmpty()比"" .equals(s)或s.equals("")效能更快 - Dmytro Dumanskiy
讓我們看一下以下基本程式碼:
if (s != null && s.equals(“”)) { } |
或
if (“”.equals(s)) { } |
乍一看,它看起來像是正確的程式碼。但是,如果我們考慮效能,那不是最佳選擇。讓我們稍微改變一下方法,改用String.isEmpty()方法:
if (s != null && s.isEmpty()) { } |
改用isEmpty以後的新程式碼速度提高了約20–40%!
效能測試程式碼:
@BenchmarkMode(Mode.AverageTime) @Fork(1) @State(Scope.Thread) @Warmup(iterations = 5, time = 1) @OutputTimeUnit(TimeUnit.NANOSECONDS) @Measurement(iterations = 10, time = 1) public class EmptyStringEquals { @Param({"", "nonEmptyString"}) private String strParams; @Benchmark public boolean nonNullAndIsEmpty() { return strParams != null && strParams.isEmpty(); } @Benchmark public boolean equalsPost() { return strParams != null && strParams.equals(""); } @Benchmark public boolean preEquals() { return "".equals(strParams); } } 測試結果: EmptyStringEquals.equalsPost avgt 10 4.240 ± 0.058 ns/op EmptyStringEquals.nonNullAndIsEmpty avgt 10 2.985 ± 0.048 ns/op EmptyStringEquals.preEquals avgt 10 4.243 ± 0.062 ns/op EmptyStringEquals.equalsPost nonEmptyString avgt 10 3.522 ± 0.034 ns/op EmptyStringEquals.nonNullAndIsEmpty nonEmptyString avgt 10 2.894 ± 0.048 ns/op EmptyStringEquals.preEquals nonEmptyString avgt 10 3.672 ± 0.016 ns/op |
基準測試的原始碼,因此您可以自己嘗試。
相關文章
- ==與equals比較
- 證明PyPy比Python更快的5個效能基準 - codexPython
- ==和equals方法的比較
- 比Minikube更快,使用Kind快速建立K8S學習環境K8S
- 三星S9+、華為Mate 10 Pro速度對比 誰更快?
- BigDecimal的equals() 和 compareTo() 方法比較Decimal
- 比 Elasticsearch 更快! RediSearch + RedisJSON = 王炸!ElasticsearchRedisJSON
- Java中equals和==比的是什麼Java
- Java中hashcode和equals效能注意點 - ShaiJavaAI
- 音訊處理庫效能對比:計算mel頻譜的速度哪個更快?音訊
- JAVA程式設計習慣之equals對比Java程式設計
- 自從用了Sass,我比以前更快了?
- 效能優化:如何更快地接收資料優化
- JAVA中字串比較equals()和equalsIgnoreCase()的區別Java字串
- 效能比較
- equals 和 ==
- java equalsJava
- Equals方法
- equals & hashCode
- for & range 效能對比
- Ordering列以或更好效能
- 比Python、Java更快的 Go 語言,能否稱霸江湖?PythonJavaGo
- J2SE-("").equals(str)與str.equals("")
- 【謊言大揭祕】Modin真的比pandas執行更快嗎?
- Xor過濾器:比布隆Bloom過濾器更快,更小過濾器OOM
- Opensignal:紐西蘭5G速度比Wi-Fi更快
- 最新notejs編寫商城原始碼。比php更快,更流暢JS原始碼PHP
- 為什麼建立比Redis更快的KeyDB?就是玩兒! - SullyRedis
- hashCode()與equals()
- equals&hashCode
- StringUtils.equals()
- 請比較下for、forEach、for of的效能的效能
- 為什麼nginx效能比apache效能好NginxApache
- java高效能反射及效能對比Java反射
- 為什麼阿里巴巴禁止使用BigDecimal的equals方法做等值比較?阿里Decimal
- 《幸福工廠》銷量超百萬 Steam銷售速度比Epic更快
- 前端效能優化(四)——網頁載入更快的N種方式前端優化網頁
- matlab標量或矩陣比較Matlab矩陣