https://github.com/apple/swift/blob/main/docs/StringDesign.rst
부분부분 정리하기~~~ (Swift 1.0 설계용 문서라 참고만 하면 좋을듯)
<aside>
📌 목자
Strings are Efficent
String 의 구현은 여러 최적화 기술을 활용하고 있다. 아래를 포함한다:
- Storing short strings without heap allocation
- [ ] 얼마나 작은 short string 이어야 하는가?
- 최소한 16바이트 미만이어야함 (String 기본 스택 사이즈가 16바이트 이므로)
- String 의 Stack 할당 사이즈는?
- Sharing allocated buffers among copies and slices
- COW
- 이것이 동작하는 지 보려면 내부적으로 정의된 속성을 통해 힙을 찍어야 하는데 어떻게 접근할수 있을지 모르겠음
- In-place modification of uniquely-owned buffers
As a result, copying and slicing strings, in particular, can be viewed by most programmers as being "almost free."
Strings are Value Types
- 전달받거나 전달하는 문자열은 복사본으로, 독립적인 값을 가지고 있다.
- unintended-sharing-of-state 가 일어나지 않는다.
Strings are Containers
→ 문서를 찾아보아도 현재 Container
라는 프로토콜은 존재하지 않음
→ Collection
으로 이해하면 좋을 것 같다.