속도 2

[자료구조] Array와 LinkedList의 삽입/삭제 (feat. ArrayList vs LinkedList)

1. Array vs LinkedList 정의 Array와 LinkedList는 모두 연속된 데이터 집합을 위한 기본 자료구조입니다. 차이 Array와 LinkedList의 가장 큰 차이는 메모리 할당 방식입니다. Array Array는 연속적인 주소 할당으로, 주소를 이용하면 모든 데이터의 접근 시간이 동일한 Random Access가 가능하여 데이터 탐색이 빠를 수 있습니다(O(1)). 그러나 데이터 삽입/삭제에서 이 연속성을 지키기 위해 데이터를 움직이는 비용(O(n))이 발생하고, 크기가 고정되야하기 때문에 Dynamic Array의 경우 데이터 삽입 중 크기가 큰 Array로 copy하는 비용(Amortized O(1))이 발생할 수 있습니다. LinkedList LinkedList는 원소마다 ..

고민하기 2022.04.16

버퍼(Buffer)를 사용하면 속도가 빨라진다?

버퍼는 처리속도를 빠르게한다? 운영체제를 공부하면서 "버퍼"를 오랜만에 접했다. 내가 버퍼하면 가장 먼저 떠오르는 것은, 네트워크에서 패킷에 데이터를 싣는 과정에 사용되는 버퍼다. 그리고 운영체제에서 설명하는 버퍼는 속도 차이를 가지는 장치 사이에서 사용된다고 한다. 버퍼의 의미가 "완충기"인 것처럼, 두 버퍼 모두 같은 역할이며 존재하는 의미도 같다. 그런데 버퍼에 대해 검색하던 중, 아래 문구를 보고 신경쓰였다. 버퍼를 사용하면 속도가 빨라진다[0][1] 버퍼라는게 속도가 다른 두 장치 사이의 데이터 교환에서 유용한 건 알겠지만, 어떤 측면에서는 불필요한 과정이 추가되었기 때문에 오버헤드가 생긴 것이다. 그럼에도 버퍼를 사용하면 속도가 빨라진다는 말이 어떻게 생긴 것인지 궁금했다. 버퍼의 동작 먼저 ..

고민하기 2021.08.02