Jsoup의 API에서 가장 값 비싼 방법은 parse()입니다.Document.html()이 그렇게 느린 이유는 무엇입니까?
그러나 방금 Document.html()이 더 느릴 수 있음을 발견했습니다.
(즉이 파싱 이후), I이 놀라운를 찾아Document
은
parse()
의 출력임을 감안할.
Document.html()
의 속도가 느린 이유는 무엇입니까?
Jsoup의 API에서 가장 값 비싼 방법은 parse()입니다.Document.html()이 그렇게 느린 이유는 무엇입니까?
그러나 방금 Document.html()이 더 느릴 수 있음을 발견했습니다.
(즉이 파싱 이후), I이 놀라운를 찾아Document
은
parse()
의 출력임을 감안할.
Document.html()
의 속도가 느린 이유는 무엇입니까?
답장을 보내십시오. 심지어 상대적으로 큰 문서, Document.html()
의 속도 저하를 설명 할 수 있습니다 문자열이 이미 좋은 일이 대신하여 StringBuilder 및 StringBuilder.toString()
및 String.trim()
의 사용을 사용
public String html() {
StringBuilder accum = new StringBuilder();
html(accum);
return accum.toString().trim();
}
다음 Element.html() 방법으로 구현됩니다. 문서가 자식 노드를 많이 포함 된 경우
가private void html(StringBuilder accum) {
for (Node node : childNodes)
node.outerHtml(accum);
}
따라서, 느린 될 것입니다 :
그러나 중간에
, 우리의 방법은 문서의 모든 자식 노드를 통해 루프 오버로드 버전,Element.html(StringBuilder)
를 호출 . 더 빠른 구현이 가능한지 여부는 흥미로울 것입니다. Jsoup가 Jsoup.parse()
통해 제공 한 원료 HTML의 캐시 버전을 저장하는 경우, 예를 들어
. 물론 옵션으로 이전 버전과의 호환성 및 메모리 사용 공간을 최소화 할 수 있습니다.