Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- iOS Static Library 사용하는방법
- Associated Value
- CoreData Filter
- 트레일링 클로저
- Swift closure
- 다익스트라 이해
- iOS Static Library
- Persistent store Coordinator
- Clean swift
- 스위프트 클로저
- NSSortDescriptor
- CoreData Stack
- Raw value and Associated value
- Java
- CoreData
- dateFormatter
- 2022 부스트캠프
- expensive operation
- NSManagedObject SubClass
- persistentStoreCoordinator
- CoreData Concurrency
- leetcode #01
- Swift
- LightWeight Migration
- NSPredicates
- Swift LinkedList
- 1009번
- codability
- 일급 객체
- Swift 고차함수
Archives
- Today
- Total
하루를살자
[Swift] Expansive DateFormatter : 어떻게 사용해야할까? 본문
WWDC 나 주변에서 dateFormatter 는 비싼 객체이고, 사용할때 신경써서 사용해야한다는 말을 들었다.
그럼 DateFormatter 를 언제, 어떻게 사용할때 성능저하를 일으킬까?
DateFormatter 를 사용하는 데 어떤 부분에서 시간이 오래걸리는지 이 아티클 에서 XCTest 의 Measure 메소드를 사용해서 정리해놓았다.
이 글을 요약하면 아래와같은 상황을 남발할때 성능저하(실행 속도가 느려짐으로 전체 프로그램이 버벅이는 현상) 를 불러올수 있다고 한다.
DateFormatter
생성할때.DateFormatter
의 프로퍼티를 변경할때date(from: String)
을 실행할때
그럼 어떤 식으로 DataFormatter
를 사용해야할까?
- DateFormatter 가 생성되면 이후의 formatter 의 프로퍼티를 바꾸는 행위는 최대한 삼가한다.
- Date 에서 String 으로 변환 하는 작업을 남발하지 않는다.
코드를 어떤 방향으로 작성 해야 할까?
- 성능을 개선하기 위해 사용될 dateformatter 인스턴스 들과 메소드 들 을 미리 생성해두어 사용될곳에 재사용한다.
- 외부에서 각각의 formatter 들의 프로퍼티 변경을 막기 위해 싱글톤 패턴을 사용해서 구현한다.
class MyDateFormatter {
static let shared : MyDateFormatter()
private init(){}
private let periodFieldFormatter : DateFormatter{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "M월 d일"
dateFormatter.locale = Locale.current
return dateFormatter
}
private let calendarDateFormatter: DateFormatter {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale.current
dateFormatter.dateFormat = "EEEE, MMM d, yyyy"
return dateFormatter
}
func periodDateString(from date: Date) -> String{
periodFieldFormatter.string(from: date)
}
func calendarDateString(from date: Date) -> String{
calendarDateFormatter.string(from: date)
}
}
참조
https://sarunw.com/posts/how-expensive-is-dateformatter/
'Swift' 카테고리의 다른 글
ARC (Automatic Reference Counter) (0) | 2022.08.06 |
---|---|
[Swift] LinkedList (0) | 2022.08.05 |
Swift - Closure (2) : Trailing Closure (0) | 2022.02.27 |
Swift - Closure (1): 표현식 (0) | 2022.02.27 |
Swift 고차함수 (0) | 2022.02.05 |
Comments