Ich habe einige Leistungsprobleme in meiner iOS-App während der Umwandlung von Daten, die in einem 2013-12-19 00:00:00.000000
Format zu einem Medium Datum (Dec 25, 2014)
und zu einem doppelten Wert (Epoche) kommen. Laut dem Xcode-Profiler benötigen die beiden Funktionen, die diesen Prozess durchführen, ungefähr 60% meiner Ausführungszeit. Ich würde gerne wissen, wie man diesen Code verbessert oder ob es einen effizienteren Weg gibt, um was ich bekomme brauchen.Leistungsprobleme beim Analysieren von Daten
static func getMediumDate(dateString: String) -> (NSString)? {
// Get the: yyyy-MM-dd
let shorDate = dateString[dateString.startIndex..<dateString.startIndex.advancedBy(10)]
let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale(localeIdentifier: "en_US")
dateFormatter.dateFormat = "yyyy-MM-dd"
let stringFormatter = NSDateFormatter()
stringFormatter.locale = NSLocale(localeIdentifier: "en_US")
stringFormatter.dateFormat = "yyyy-MM-dd"
stringFormatter.dateStyle = .MediumStyle
let newDate = dateFormatter.dateFromString(shorDate)
if (newDate != nil){
return stringFormatter.stringFromDate(newDate!)
}else{
return nil
}
}
static func getSortDate(dateString:String) -> Double{
// Get the: yyyy-MM-dd
let shorDate = dateString[dateString.startIndex..<dateString.startIndex.advancedBy(10)]
let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale(localeIdentifier: "en_US")
dateFormatter.dateFormat = "yyyy-MM-dd"
let newDate = dateFormatter.dateFromString(shorDate)
let value = newDate?.timeIntervalSince1970
if value < DBL_MIN{
return 0
}else if value > DBL_MAX{
return DBL_MAX
}else if value != nil{
return value!
}else{
return 0
}
}
Das Erstellen von Datumsformatierern und das Festlegen der Eigenschaft 'dateFormat' sind kostspielige Operationen. Erstellen Sie jeden Datumsformatierer einmal und speichern Sie ihn in einer statischen Eigenschaft und verwenden Sie sie erneut. – dan