创建/修改日期格式化程序的成本有多高? 创建 4 个略有不同的日期格式化程序或修改单个日期格式化程序是否更便宜?
我依稀记得修改日期格式化程序 与修改 GL 上下文一样昂贵(即:非常(。
关于这个话题有一个过时的讨论 为什么分配或初始化 NSDateFormatter 被认为是"昂贵的"?
func testPerformanceExampleUpdateFormat() {
self.measure {
(0...1_000).forEach { _ in
let df = DateFormatter()
df.dateFormat = "MMM yyyy"
let formattedDate1 = df.string(from: Date())
df.dateFormat = "MM/dd/yyyy"
let formattedDate2 = df.string(from: Date())
}
}
}
func testPerformanceExampleNewInstance() {
self.measure {
(0...1_000).forEach { _ in
let df1 = DateFormatter()
df1.dateFormat = "MMM yyyy"
let df2 = DateFormatter()
df2.dateFormat = "MM/dd/yyyy"
let formattedDate1 = df1.string(from: Date())
let formattedDate2 = df2.string(from: Date())
}
}
}
更新格式 1 000 次时的结果时间:0.0896 秒。
创建新实例时的结果时间 1 000 次:0.138 秒。
类型有多贵?
func testPerformanceExample() {
self.measure {
(0...1_000).forEach { _ in
let int = DateFormatter()
}
}
}
对于 1000 个 DateFormat 实例,结果时间为 0.0017 秒
让我们将其与其他类型进行比较:
0.000883 s. 表示 1 000 个 Int 实例;//let int = 2
0.000814 s. 表示 1 000 个 String 实例;//let str = String("Hello"(
0.00118 s. 表示 1 000 个 Date 实例;//let date = Date((
0.0784 s. 对于 1 000 个 UITableViewController 实例;let vc = UITableViewController((
0.246 秒,用于 1 000 个 UITableView 实例;//let tv = UITableView((
贵吗?
NSDateFormatter 的坏处是创建新实例或设置格式和区域设置的成本。实际上,这些操作是iOS SDK上最慢的操作之一,您确实必须避免它。 阅读本文以了解有关 NSDateFormatter 等昂贵对象的更多信息