JSON.stringify() 가속화 라이브러리 살펴보기
JSON 메서드 많이 사용하시죠? 저도 크지 않은 객체, 그리고 특정 객체나 함수가 담기지 않은 경우에(함수나 정규식, Date 등등..) 딥 카피가 필요한 경우 아래의 코드처럼 자주 사용하곤 했는데요.
크게 문제가 되지 않는 상황일수도 있지만, 이 방법에는 몇 가지 문제가 있습니다. 지원되지 않는 값이 사라지거나 하는 문제도 있지만 가장 큰 문제 중 하나는 JSON 자체의 연산이 매우 느리다는 겁니다. JSON.stringify()
JSON.parse()
같은 브라우저에서 동기 작업이기 때문에 작업량이 많아지면 많아질수록 앱에 악영향을 미칩니다. 특히 프런트엔드에서 오랜 시간 동안 해당 작업을 붙잡고 있다면 사용성은 매우 나빠질 것입니다.
jsben.ch에서 간단하게 JSON 메서드, lodash의 cloneDeep, 재귀 함수를 구현해 테스트해본 결과를 보면 JSON을 사용하는 것보다 재귀 함수를 만들어서 사용하는 것이 훨씬 더 빠르다는 것을 확인할 수 있습니다. (참고: http://jsben.ch/vqwVE)
가장 좋은 처리 방법은 서버에서 모든 작업이 완료된 뒤 프런트엔드에서 처리하면 가장 좋지만 불가능한 상황도 존재할 것입니다. 이럴 때 직접 구현은 부담스러우니 외부 라이브러리 사용을 고민하게 되는데요. 외부 라이브러리를 만나기 전에 대부분의 라이브러리들이 어떻게 빠르게 가속화를 구현했는지에 대해 알아보겠습니다.
stringify 가속화 라이브러리는 어떻게 구현되어 있을까
자바스크립트는 동적 언어이기 때문에 객체에 대해 키 타입 및 값에 대해 런타임에만 결정할 수 있습니다. 이런 부분 JSON 메서드를 실행하는 데 시간이 드는 부분인데요. 이미 객체의 이름과 값, 타입, 구조에 대한…