0

RegExを使用して文字列を置き換えています。その文字列で検索するパターンは1回だけ発生する可能性があることを私は知っていました。replaceAll()replaceFirst()メソッドの両方が私のシナリオで機能します。しかし、私はreplaceAll()メソッドを使用しています。

私のアプリケーションでは、計算のミリ秒ごとが貴重です。

私の選択は正しいですか?私のシナリオにはどちらが良いですか?利用可能な比較はありますか?案内してください。

4

2 に答える 2

18

ミリ秒ごとがあなたにとって貴重であるなら、あなたは尋ねないで測定するべきです。いずれにせよ、私の推測(ここでも測定による検証)はreplaceFirst()、他の人を検索する代わりに(あなたの場合には存在しない)最初の一致の後に停止できるので、より速くなるでしょう。

を呼び出すたびに時間を節約できるため、正規表現をプリコンパイルすることもお勧めしますreplaceFirst()。または、単純な文字列置換である場合は、正規表現を回避する方法を探してください。

しかし、もう一度強調しておきます。プロファイラーを使用して、最も時間を費やしている場所を見つけ、その部分を最適化します。一度だけ呼び出され、実行時間の80%を消費する、そのすぐ隣のファットループを無視して、実行時間全体に0.07%しか寄与しないステートメントを過度に最適化することは、あまり役に立ちません。また、これまでの私の経験では、ボトルネックは最も驚くべき場所にあることが非常に多く、素朴に期待できる場所ではありません。

于 2012-08-31T08:17:26.440 に答える
1

確かreplaceFirst()に高速です。最初の発生後に停止し、replaceAll()入力全体をスキャンします。

于 2012-08-31T08:28:51.837 に答える