私はswiftでデフォルトソートアルゴリズムを使用しています。 しかし、10000(10k)レコードの場合、ipadでほぼ1分の時間がかかります。ここでSwiftで大量のテキストレコードをソートする最速のソート手法はどれですか?
private var fd: [[String:AnyObject]]? = [[String:AnyObject]]()
は、主な問題は、その10Kを超えるデータのために60秒以上を取っている
self.fd = self.fd!.sort ({
(r1, r2) -> Bool in
let t = self.headers![b.tag - 10]
if r1[t.title] is String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MMM-yyyy"
if dateFormatter.dateFromString("\(r1[t.title]!)") != nil {
let d1 = dateFormatter.dateFromString("\(r1[t.title]!)")
let d2 = dateFormatter.dateFromString("\(r2[t.title]!)")
return d1 < d2
} else {
//return "\(r1[t.title])".localizedStandardCompare("\(r2[t.title])") == .OrderedAscending
return "\(r1[t.title])" < "\(r2[t.title])"
}
} else if r1[t.title] is Int {
return Int(String(r1[t.title]!)) < Int(String(r2[t.title]!))
} else {
// return "\(r1[t.title])".localizedStandardCompare("\(r2[t.title])") == .OrderedAscending
return "\(r1[t.title])" < "\(r2[t.title])"
}})
を昇順
self.fd = self.fd!.sort ({ (r1, r2) -> Bool in
let t = self.headers![b.tag - 10]
if r1[t.title] is String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MMM-yyyy"
if dateFormatter.dateFromString("\(r1[t.title]!)") != nil {
let d1 = dateFormatter.dateFromString("\(r1[t.title]!)")
let d2 = dateFormatter.dateFromString("\(r2[t.title]!)")
return d1 > d2
} else {
// return "\(r1[t.title])".localizedStandardCompare("\(r2[t.title])") == .OrderedDescending
return "\(r1[t.title])" > "\(r2[t.title])"
}
} else if r1[t.title] is Int {
return Int(String(r1[t.title]!)) > Int(String(r2[t.title]!))
} else {
// return "\(r1[t.title])".localizedStandardCompare("\(r2[t.title])") == .OrderedDescending
return "\(r1[t.title])" > "\(r2[t.title])"
}})
を降順ための私のコードです。 解決策を教えてください。
'let dateFormatter = NSDateFormatter(); dateFormatter.dateFormat = "dd-MMM-yyyy" 'はクロージャの外側を移動します。常に同じですが、無駄なalloc/initと消費です。それはあなたを少し節約するはずです。 – Larme
楽器でタイムプロファイラツールを試しましたか?例えば。 https://www.raywenderlich.com/97886/instruments-tutorial-with-swift-getting-started – Mats
撮影時間はhttps://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode –