Tutaj
używał Swift Performance Test 2.0 iOS 6 na iPhone 9.0 Symulator pomiędzy rozwiązaniami z:
- CFStringTransform (Zadanie 1)
- stringByFoldingWithOptions (zadanie 2)
Zadanie 2 jest konsekwentnie szybciej, np
Task 1 took 9.49736100435257 seconds.
Task 2 took 1.96649599075317 seconds.
W tym teście:
let timer = ParkBenchTimer()
for _ in 1...1000000 {
let mStringRef = NSMutableString(string: "Être ou ne pas être. C'était là-bas.") as CFMutableStringRef
CFStringTransform(mStringRef, nil, kCFStringTransformStripCombiningMarks, false)
String(mStringRef)
}
print("Task 1 took \(timer.stop()) seconds.")
let timer2 = ParkBenchTimer()
for _ in 1...1000000 {
"Être ou ne pas être. C'était là-bas.".stringByFoldingWithOptions(NSStringCompareOptions.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale())
}
print("Task 2 took \(timer2.stop()) seconds.")
ParkBenchTimer od Klaas: https://stackoverflow.com/a/26578191/1097106
Dziękuję, ale kiedy transformuję znaki UTF-8, na przykład ** na ** nie staje się ** a **, ale **? **. – Rob
Edytowany post - przepraszam Użyłem niewłaściwego typu kodowania. Moja wersja używająca kodowania ASCII działa w Xcode - może użycie właściwego kodowania zadziała. – Luke
Tym razem zadziałało. Dziękuję Ci ! – Rob