2011-03-27 7 views
5

자바 스크립트에서 대용량 텍스트 문서 (예 : 소스 코드 파일)를 효율적으로 편집해야합니다.Javascript에서 큰 문자열을 효율적으로 편집하기위한 라이브러리가 있습니까?

insertAtPosition(n, str)deleteAtPosition(n, length)은 빠릅니다.

각 작업은 문서의 내용을 새 문자열로 복사해야하기 때문에 순진한 문자열 구현이 느립니다.

몇 가지 효율적인 방법이 있습니다. 줄 배열 (Ace 일명 Bespin이이 작업을 수행 할 수 있습니다.)을 사용할 수 있지만 긴 긴 줄 또는 짧은 줄이 많은 경우 속도가 느려집니다. 더 나은 구현은 skip lists 또는 다른 영리한 데이터 구조를 사용합니다.

하지만 누군가가 이미 그런 것을 구현했기를 기대합니다.

이미이 작업을 수행하는 라이브러리가 있습니까? Google에서 유용한 정보를 찾을 수없는 것 같습니다.이 알고리즘 문제의 일반적인 이름이 있습니까?

+2

시도 로프 : https://secure.wikimedia.org/wikipedia/en/wiki/Rope_%28computer_science%29 –

+0

것은 아마도 사용 'source.split ('')'문자로 분리 한 다음 최악의 경우 O (n) 인 원시 Array.splice를 사용하십시오. – Reid

+0

@Reid : 문자열의 순수한 조작은 이미 O (n)이므로 아무 것도 얻을 수 없습니다. Javascript의 배열에 요소 당 메모리 오버 헤드가있는 경우 실제로 접근 속도가 느려집니다. –

답변

2

나는 이것을 수행 할 다른 라이브러리가 없다고 생각합니다. 따라서 건너 뛰기 목록을 사용하여 직접 구현했습니다. 트리 데이터 구조를 사용하는 것이 더 빠를 수도 있지만 건너 뛰기 목록은 구현하기 쉽고 클로저 컴파일 된 javascript는 2.5KB입니다. 같은 문제를 가진 다른 사람이 있다면

, 즐길 :

https://github.com/josephg/jumprope

관련 문제