ヌルをチェックする伝統if
文では、Apache CommonsのラングのStringUtils isEmpty
/isBlank
よりも高速であるかどうかを確認するために簡単な実験をしようとしています。
このテストを実行するには、Java 8u102
、Apache Commons Langバージョン3.4
を使用し、Windows 10 64ビットで実行しています。私は、VEのに
System.out.println("Testing of StringUtils.isNotNull vs native java method");
System.out.println("======================================================");
System.out.println("Testing conventional method...");
final List<String> array = new ArrayList<String>();
array.add("1");
array.add(null);
array.add("3");
array.add(null);
array.add("5");
long start = System.currentTimeMillis();
for (String s : array) {
System.out.println(s == null ? "yes" : "no");
}
System.out.println(System.currentTimeMillis() - start);
System.out.println("Testing StringUtils method...");
start = System.currentTimeMillis();
for (String s : array) {
System.out.println(StringUtils.isBlank(s) ? "yes" : "no");
}
System.out.println(System.currentTimeMillis() - start);
結果
Testing of StringUtils.isNotNull vs native java method
======================================================
Testing conventional method...
no
yes
no
yes
no
0
Testing StringUtils method...
no
yes
no
yes
no
6
:
テストコードは
は、以下の標準的なメインクラスを使用してテストコードですryはネイティブメソッドがApache Commons Langライブラリより速いことに驚いています。私の結果は決定的である場合
質問
は、誰もが指摘することはできますか?私のテストが間違っている可能性はありますか?ありがとう。
[ソースを見る](https://commons.apache.org/proper/commons-lang/apidocs/src-html/org/apache/commons/lang3/StringUtils.html)。 – Li357
オーバーヘッドはダブル/トリプルチェック用だと思います。 – d4v1dv00
あなたのコードはStringUtils#isBlankを使用しています。これはヌルテスト以上のことをしており、空の文字列と空白文字列のみをチェックします。 – benbenw