2013-03-25 4 views
3

AJAX를 통해 많은 양의 데이터 (좌표와 추가 값)를 검색해야합니다. 데이터의 형식은 다음구분 된 문자열 분리 대 JSON JSON 구문 분석 JavaScript의 효율성

-72.781;;6,-68.811;;8 

의 2 개 개의 상이한 분리가 이용되고있다 : ;;,.

구분 된 문자열을 반환하고 String.split() (두 번 사용)을 사용 하시겠습니까, 아니면 JSON 문자열을 반환하고 JSON.parse()을 사용하여 데이터를 압축 해제하는 것이 좋습니까? 각 방법에서 최악과 최상은 무엇입니까?

+1

예상되는 JSON 반환 유형의 ajax 호출을 만들면 더 이상 JSON.parse()를 사용할 필요가 없습니다. – Luceos

+0

이 질문은 매우 광범위합니다. 현실적인 데이터 세트에서 몇 가지 벤치 마크를 실행하고 어떤 벤치마킹이 더 나은지 확인해야합니다. – Brandan

+0

정말 당신이 결정하기에 맞습니까? 당연히 'split'은 데이터에서 간단한 배열 구조를 사용하도록하지만 JSON은 데이터를 더 복잡하게 만듭니다. –

답변

6

데이터가 실제로 상당히 크더라도 실세계에서 눈에 띄는 성능 차이가있을 확률은 매우 낮습니다 (데이터 전송 시간이 디코딩 시간을 앞설 것입니다). 따라서 실제 성능 문제가 아니라면 코드 명확성 관점에서 최상의 것이 무엇인지 집중하는 것이 가장 좋습니다.

데이터가 균질하면 (각 좌표를 거의 같은 방식으로 처리해야 함) String#split 접근 방식에는 아무런 문제가 없습니다.

코드에서 개별적으로 좌표를 참조해야하는 경우 JSON을 사용하여 제안 할 적절한 이름을 지정하는 인수가 있습니다. 나는 선명도에 의지하는 경향이 있으므로 JSON쪽으로 기울어 질 것이다.

고려해야 할 또 다른 사항은 전선의 크기입니다. 좋은 뚱뚱한 네트워크 연결을 지원할 필요가있는 경우에 그것은 아마 중요하지 않다, 그러나 JSON 열쇠가 각 목표를 위해 reiterated 때문에, 크기는 현저하게 더 클 수 있었다. 그것은 compressed JSON을 주장 할 수 있습니다.

+0

실제로 각 좌표에 하나 이상의 필드 값이 추가됩니다. 질문을 수정하겠습니다. – Amar

+0

친절하게 편집하십시오. 너는 여전히 갈 것 같니 분열은 나아질거야? – Amar

+1

@Amar :'String # split'이 더 좋을 것이라고 생각했는지 확신 할 수 없습니다. (각 접근법을 고려할 이유를 제안 했으므로 옹호하지 않았습니다.) 질문에 추가 한 데이터가 'String # split'을 통해 얻는 것은 여전히 ​​간단하지만 데이터의 개별 부분마다 다른 의미가있는 경우 JSON쪽으로 기울어 져 있습니다. 실명이 유용합니다.JSON을 사용할 때의 단점은 와이어에서 더 커질 것이라는 점입니다. –

2

문제를 설명하는 performance test을 만들었습니다.
브라우저 구현에 따라 다르지만 많은 경우에 - split이 훨씬 빠르다. 왜냐하면 JSON.parse은 백그라운드에서 다른 많은 일을하기 때문에 쉽게 분석 할 수 있도록 데이터를 제공해야한다. 테스트 split (replace) 중 하나를 사용하여 이미 포맷 된 json 배열을 구문 분석 한 결과를 추가했으며 그 결과는 그 자체로 나타납니다.

전체적으로 볼 때 스크립트를 몇 밀리 초 더 빠르게하지는 않지만 n 초는 읽기와 유지가 더 어려워집니다.

+0

http://jsperf.com/json-parse-vs-string-split : 이것은 반대의 이유를 제시합니다. – Amar

+1

응답이 더 복잡해질수록 (배열 배열처럼) 두 가지 구문 분석 방법 모두 * 할 일이 더 많아졌습니다. 이 예제에서 모든 배열 멤버가 단순한 문자열이기 때문에 JSON.parse는 거의 모든 유효성 검사를 수행 할 필요가 없습니다. 좌표의 배열이 있었기 때문에, 필자가 설명한 테스트는 다른 것보다 문제에 더 가깝다고 생각합니다. –

+0

그래, 알았어, 설명 주셔서 감사합니다 :) – Amar