[Java]String のindexOfとcontainsの速度比較

str.indexOf(“target”) > -1
str.contains(“target”)
上記のどちらが速いかという話。

答え:containsは内部的にindexOfを呼んでおり速度は変わらないのでcontainsでいいよ。

むしろ、出現率を踏まえた処理を書く方が速くなりますよという話。

String lower_ua = userAgent.toLowerCase();
bool isIOS = (lower_ua.contains("iphone") || lower_ua.contains("ipad") || lower_ua.contains("ipod"));

String lower_ua = userAgent.toLowerCase();
bool isIOS = (lower_ua.contains("ip") && (lower_ua.contains("iphone") || lower_ua.contains("ipad") || lower_ua.contains("ipod"));

アホみたいなソースですが、
iOSの出現率が低く想定される場合は、先に”ip”という文字列で事前チェックすることで、分岐が減るって話です。
iOS以外で”ip”でかかるのは”Sleipnir”くらいなモノっていう事前調査は必要ですが。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください