2013-12-19 00:00:00.000000
形式の日付を中間形式の日付(Dec 25, 2014)
に変換し、倍精度(エポック)に変換する際に、iOSアプリケーションでパフォーマンスの問題が発生しています。 Xcodeプロファイラによれば、このプロセスを実行する2つの関数(実行中)は、実行時間の約60%を占めています。日付の解析中にパフォーマンスの問題が発生する
このコードを改善する方法を知りたいのですが、必要。
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
}
}
日付フォーマッタの作成と 'dateFormat'プロパティの設定は、高価な操作です。各日付フォーマッタを一度作成し、静的プロパティに格納して再利用します。 – dan