RegExを使用して文字列を置き換えています。その文字列で検索するパターンは1回だけ発生する可能性があることを私は知っていました。replaceAll()
とreplaceFirst()
メソッドの両方が私のシナリオで機能します。しかし、私はreplaceAll()
メソッドを使用しています。
私のアプリケーションでは、計算のミリ秒ごとが貴重です。
私の選択は正しいですか?私のシナリオにはどちらが良いですか?利用可能な比較はありますか?案内してください。
ミリ秒ごとがあなたにとって貴重であるなら、あなたは尋ねないで測定するべきです。いずれにせよ、私の推測(ここでも測定による検証)はreplaceFirst()
、他の人を検索する代わりに(あなたの場合には存在しない)最初の一致の後に停止できるので、より速くなるでしょう。
を呼び出すたびに時間を節約できるため、正規表現をプリコンパイルすることもお勧めしますreplaceFirst()
。または、単純な文字列置換である場合は、正規表現を回避する方法を探してください。
しかし、もう一度強調しておきます。プロファイラーを使用して、最も時間を費やしている場所を見つけ、その部分を最適化します。一度だけ呼び出され、実行時間の80%を消費する、そのすぐ隣のファットループを無視して、実行時間全体に0.07%しか寄与しないステートメントを過度に最適化することは、あまり役に立ちません。また、これまでの私の経験では、ボトルネックは最も驚くべき場所にあることが非常に多く、素朴に期待できる場所ではありません。
確かreplaceFirst()
に高速です。最初の発生後に停止し、replaceAll()
入力全体をスキャンします。