저는 Ajax를 통해 많은 JSON 데이터를주고받는 Railo 앱을 만들고 있습니다. 성능을 최적화 할 수있는 기회를 찾았지만 문제를 해결하기 전에 커뮤니티의 조언을 듣고 싶습니다.SerializeJSON을 사용하여 COLUMNS 및 DATA 노드가있는 JSON 객체 대신 구조체 배열을 반환 하시겠습니까?
다음은 좋은 예입니다.
입찰 응답 집합을 쿼리하고이를 JSON에 직렬화 한 다음 프런트 엔드의 자바 스크립트로 반환하여 일부 HTML을 구문 분석하고 렌더링하는 작업을 서버에서 수행합니다.
{"COLUMNS":["one","two","three",...],"DATA":["value","value","value",...]}
내가 이름 노드 객체의 배열에이 형식을 변환 할 underscore '의지도() 함수를 사용하는 함수를 썼다 : 라일로는 JSON을 반환하는 형식은 친숙한 두 개의 노드 객체입니다
function toArgsObject(data,columns) {
return _.map(data, function(w){
var q = {};
for (var i=0; i < w.length; i++) { eval("q."+columns[i]+" = w[i]"); };
return q;
});
};
이 작업은 매우 편리합니다. 그러나 성능이 좋지 않습니다! 웹킷과 파이어 폭스와 같은 신속한 js 인터프리터를 사용하는 경우에도이 함수는 호출하는 함수에서 처리 시간의 75 %를 차지하는 경우가 많습니다. 특히 데이터 세트가 클 경우 특히 그렇습니다. 이 처리를 서버에 맡김으로써 얼마나 많은 개선이 있었는지보고 싶습니다만, cfml/cfscript를 사용하여이 효율적인 버전을 작성하지 않았습니다.
내가 다시 서버에서 올 필요가있는 무엇, 다음과 같을 것이다 :
[
{"one":"value","two":"value","three":"value"},
{"one":"value","two":"value","three":"value"}.
...
]
내가 SerializeJSON에서 사용하는 형식이 훨씬 작고, 따라서 보내 적은 대역폭을 사용하여 응답을 만들고 있음을 이해합니다. 이것은 실험이 들어오는 곳입니다. 나는 그것이 다른 일을하는 나의 어플리케이션에 어떻게 영향을 주는지보고 싶습니다!
이 형식의 데이터를 반환 할 수있는 JSON 직렬기를 작성한 사람이 있습니까?
ack youre right. 나에게 뭐가 문제 니? –
이 수정을 수행하면 toArgsObject()의 성능이 3 배가됩니다. 나는 당황! 호기심에서, 나는 아직도 누군가가 나의 원래 질문에 대한 답을 가지고 있는지 알고 싶다. –