@@ -52,7 +52,7 @@ public void markTraverseDOM4J(DOMDataSmall data) {
5252 }
5353 }
5454
55- private int traverse (Node node , int count ) {
55+ private static int traverse (Node node , int count ) {
5656 Node child = node .getFirstChild ();
5757 while (child != null ) {
5858 count ++;
@@ -62,6 +62,26 @@ private int traverse(Node node, int count) {
6262 return count ;
6363 }
6464
65+ @ Benchmark
66+ public void markTraverseJsoup (DOMData data ) {
67+ org .jsoup .nodes .Node child = data .jsoupDoc .firstElementChild ();
68+ int count = traverseJsoup (child , 0 );
69+ if (count < data .minimumCount ) {
70+ throw new IllegalStateException (
71+ "Expected a count of " + data .minimumCount + " obtained " + count );
72+ }
73+ }
74+
75+ private static int traverseJsoup (org .jsoup .nodes .Node node , int count ) {
76+ org .jsoup .nodes .Node child = node .firstChild ();
77+ while (child != null ) {
78+ count ++;
79+ count = traverseJsoup (child , count );
80+ child = child .nextSibling ();
81+ }
82+ return count ;
83+ }
84+
6585 @ Benchmark
6686 public void markTraversePrevJdk (DOMDataSmall data ) {
6787 Node node = data .jdkDoc .getDocumentElement ();
@@ -100,4 +120,24 @@ private int traversePrev(Node node, int count) {
100120 return count ;
101121 }
102122
123+ @ Benchmark
124+ public void markTraversePrevJsoup (DOMData data ) {
125+ org .jsoup .nodes .Node child = data .jsoupDoc .firstElementChild ();
126+ int count = traversePrevJsoup (child , 0 );
127+ if (count < data .minimumCount ) {
128+ throw new IllegalStateException (
129+ "Expected a count of " + data .minimumCount + " obtained " + count );
130+ }
131+ }
132+
133+ private static int traversePrevJsoup (org .jsoup .nodes .Node node , int count ) {
134+ org .jsoup .nodes .Node child = node .lastChild ();
135+ while (child != null ) {
136+ count ++;
137+ count = traversePrevJsoup (child , count );
138+ child = child .previousSibling ();
139+ }
140+ return count ;
141+ }
142+
103143}
0 commit comments