클라이언트에게 보낼 20MB의 슬라이스를 꺼내는 데 대략 5밀리초가 걸린다. 이는 서버의 최대 전체 스루풋이 이론적으로 20MB / 5밀리초 = 4 GB/초라는 뜻이다. 이보다 더 빨리 메모리에서 비디오 데이터를 꺼내올 수는 없다. 이 서버에서 병렬로 새 데이터 덩어리를 요청할 수 있는 클라이언트의 최대 개수는 1 CPU-초/ 5밀리초 = 200개다. 이 개수는 asyncio 내장 모듈 같은 도구가 지원할 수 있는 수만 건의 동시 접속에 비하면 아주 작다. 문제는 기반 데이터를 bytes 인스턴스로 슬라이스하기 위해서는 메모리를 복사해야 하는데 이 과정이 CPU 시간을 점유한다는 점이다.
이 코드를 더 잘 작성하는 방법은 파이썬이 제공하는 memoryview 내장 타입을 사용하는 것이다. memoryview는 CPython의 고성능 버퍼 프로토콜을 프로그램에 노출시켜준다. 버퍼 프로토콜은 파이썬 런타임과 C 확장이 bytes와 같은 객체를 통하지 않고 하부 데이터 버퍼에 접근할 수 있게 해주는 저수준 C API다(아이템 96 “성능과 편의성을 최대화하기 위해 확장 모듈을 고려하라” 참조). memoryview 인스턴스의 가장 좋은 점은 슬라이스를 하면 데이터를 복사하지 않고 새로운 memoryview 인스턴스를 만들어 준다는 점이다. 다음 코드에서 bytes 인스턴스를 둘러싸는 memoryview를 만들고, 이 memoryview의 슬라이스를 살펴본다.