私は最適化したいコードでこれを見つけました。ここ はsnipetです:これは通常のJava正規表現の動作ですか?
tempString = bigBuffer.replaceAll("\\n", "");
tempString = tempString.replaceAll("\\t", "");
は、その後、私は賢明に正規表現を使用することを決めたと、私はこれをしなかった:
tempString = bigBuffer.replaceAll("[\\n\\t]", "");
その後、友人が代わりにこれを行うために私に言った:
tempString = bigBuffer.replaceAll("\\n|\\t", "");
私は自分の変更の結果を知りたいので、私はそれが良い最適化であるかどうかを検証するためのテストを行いました。したがって、(Javaバージョン "1.6.0_27")の結果は、最初のコードが参照100%であることになります。
パイプでは121%なので、タスクを実行するのに時間がかかりました。
角括弧では52%なので、タスクを実行するのに時間がかかりませんでした。
なぜ正規表現は同じでなければならない場所が違うのですか?
マーティン
なぜ同じにする必要がありますか? – BoltClock
同じことをするので、同じでなければならないと私は信じています。パイプが単一文字で使用される場合、コンパイラは最適化を必要とするかもしれません。 – Martin