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”くらいなモノっていう事前調査は必要ですが。