mirror of
https://github.com/PuerkitoBio/goquery.git
synced 2024-04-21 12:31:36 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f065786d41 | ||
|
|
e8c0a63721 | ||
|
|
263b827b20 | ||
|
|
2d2b626f0d | ||
|
|
8a4ef5dbdd | ||
|
|
948b88c36f | ||
|
|
27b24066a6 | ||
|
|
485b1f5575 | ||
|
|
0d8bcaa448 | ||
|
|
d49fa5b2a1 | ||
|
|
d84f346f92 | ||
|
|
f5309e0304 | ||
|
|
4bdceda6d8 | ||
|
|
fd221b178b | ||
|
|
ee5503bf12 | ||
|
|
474b169363 |
@@ -1,2 +1,5 @@
|
||||
*.sublime-*
|
||||
.DS_Store
|
||||
*.swp
|
||||
#*.*#
|
||||
tags
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2012, Martin Angers & Contributors
|
||||
Copyright (c) 2012-2013, Martin Angers & Contributors
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# goquery - a little like that j-thing, only in Go
|
||||
|
||||
GoQuery brings a syntax and a set of features similar to [jQuery][] to the [Go language][go]. It is based on the [experimental html package][exphtml] and the CSS Selector library [cascadia][]. Since the experimental html parser returns tokens (nodes), and not a full-featured DOM object, jQuery's manipulation and modification functions have been left off (no point in modifying data in the parsed tree of the HTML, it has no effect).
|
||||
GoQuery brings a syntax and a set of features similar to [jQuery][] to the [Go language][go]. It is based on the experimental html package and the CSS Selector library [cascadia][]. Since the experimental html parser returns tokens (nodes), and not a full-featured DOM object, jQuery's manipulation and modification functions have been left off (no point in modifying data in the parsed tree of the HTML, it has no effect).
|
||||
|
||||
Supported functions are query-oriented features (`hasClass()`, `attr()` and the likes), as well as traversing functions that make sense given what we have to work with. This makes GoQuery a great library for scraping web pages.
|
||||
|
||||
@@ -8,26 +8,24 @@ Syntax-wise, it is as close as possible to jQuery, with the same function names
|
||||
|
||||
## Installation
|
||||
|
||||
Since this library (and cascadia) depends on the experimental branch, this package must be installed first. Both GoQuery and Cascadia expect to find the experimental library with the `"exp/html"` import statement. To install it at this location, there's [this guide][wikiexp], but since late December 2012, Go tip has evolved and `"exp/html"` won't build with Go1.0.3. So the last valid revision that will build with Go1 is `d9ff34d481bc`. Just replace the second step in [the guide][wikiexp] with this command:
|
||||
$ go get github.com/PuerkitoBio/goquery
|
||||
|
||||
hg clone -r d9ff34d481bc https://code.google.com/p/go go-exp
|
||||
(optional) To run unit tests:
|
||||
|
||||
$ cd $GOPATH/src/github.com/PuerkitoBio/goquery
|
||||
$ go test
|
||||
|
||||
The rest of the guide can be followed as-is (note that you can build just the `exp/html` package, you don't have to build `exp/...`).
|
||||
(optional) To run benchmarks:
|
||||
|
||||
Once this is done, install GoQuery:
|
||||
|
||||
`go get github.com/PuerkitoBio/goquery`
|
||||
|
||||
To run unit tests, run this command in goquery's source directory (`$GOPATH/src/github.com/PuerkitoBio/goquery`):
|
||||
|
||||
`go test`
|
||||
|
||||
To run benchmarks, run this command in goquery's source directory:
|
||||
|
||||
`go test -bench=".*"`
|
||||
$ cd $GOPATH/src/github.com/PuerkitoBio/goquery
|
||||
$ go test -bench=".*"
|
||||
|
||||
## Changelog
|
||||
|
||||
* **v0.3.2** : Add `NewDocumentFromReader()` (thanks jweir) which allows creating a goquery document from an io.Reader.
|
||||
* **v0.3.1** : Add `NewDocumentFromResponse()` (thanks assassingj) which allows creating a goquery document from an http response.
|
||||
* **v0.3.0** : Add `EachWithBreak()` which allows to break out of an `Each()` loop by returning false. This function was added instead of changing the existing `Each()` to avoid breaking compatibility.
|
||||
* **v0.2.1** : Make go-getable, now that [go.net/html is Go1.0-compatible][gonet] (thanks to @matrixik for pointing this out).
|
||||
* **v0.2.0** : Add support for negative indices in Slice(). **BREAKING CHANGE** `Document.Root` is removed, `Document` is now a `Selection` itself (a selection of one, the root element, just like `Document.Root` was before). Add jQuery's Closest() method.
|
||||
* **v0.1.1** : Add benchmarks to use as baseline for refactorings, refactor Next...() and Prev...() methods to use the new html package's linked list features (Next/PrevSibling, FirstChild). Good performance boost (40+% in some cases).
|
||||
* **v0.1.0** : Initial release.
|
||||
@@ -102,11 +100,10 @@ The [BSD 3-Clause license][bsd], the same as the [Go language][golic]. Cascadia'
|
||||
|
||||
[jquery]: http://jquery.com/
|
||||
[go]: http://golang.org/
|
||||
[exphtml]: http://code.google.com/p/go/source/browse#hg%2Fsrc%2Fpkg%2Fexp
|
||||
[cascadia]: http://code.google.com/p/cascadia/
|
||||
[wikiexp]: http://code.google.com/p/go-wiki/wiki/InstallingExp
|
||||
[bsd]: http://opensource.org/licenses/BSD-3-Clause
|
||||
[golic]: http://golang.org/LICENSE
|
||||
[caslic]: http://code.google.com/p/cascadia/source/browse/LICENSE
|
||||
[doc]: http://go.pkgdoc.org/github.com/PuerkitoBio/goquery
|
||||
[doc]: http://godoc.org/github.com/PuerkitoBio/goquery
|
||||
[index]: http://api.jquery.com/index/
|
||||
[gonet]: http://code.google.com/p/go/source/detail?r=f7f5159120f51ba0070774d3c5907969b5fe7858&repo=net
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package goquery
|
||||
|
||||
import (
|
||||
"exp/html"
|
||||
"code.google.com/p/go.net/html"
|
||||
)
|
||||
|
||||
// First() reduces the set of matched elements to the first in the set.
|
||||
|
||||
@@ -0,0 +1,405 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Generated by SVGo -->
|
||||
<svg width="1024" height="768"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g style="font-size:20px;font-family:sans-serif">
|
||||
<rect x="0" y="0" width="1024" height="768" style="fill:white"/>
|
||||
<text x="100" y="50" style="font-size:150%"></text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="118" width="0" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="607" y="133" style="text-anchor:end">+0.10%</text>
|
||||
</g>
|
||||
<text x="100" y="138" style="text-anchor:start">BenchmarkFirst</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="144" width="0" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="617" y="159" style="text-anchor:start">-0.10%</text>
|
||||
</g>
|
||||
<text x="100" y="164" style="text-anchor:start">BenchmarkLast</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="604" y="170" width="8" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="599" y="185" style="text-anchor:end">+2.86%</text>
|
||||
</g>
|
||||
<text x="100" y="190" style="text-anchor:start">BenchmarkEq</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="604" y="196" width="8" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="599" y="211" style="text-anchor:end">+2.67%</text>
|
||||
</g>
|
||||
<text x="100" y="216" style="text-anchor:start">BenchmarkSlice</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="222" width="32" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="649" y="237" style="text-anchor:start">-10.82%</text>
|
||||
</g>
|
||||
<text x="100" y="242" style="text-anchor:start">BenchmarkGet</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="248" width="132" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="749" y="263" style="text-anchor:start">-44.06%</text>
|
||||
</g>
|
||||
<text x="100" y="268" style="text-anchor:start">BenchmarkIndex</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="274" width="156" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="773" y="289" style="text-anchor:start">-52.26%</text>
|
||||
</g>
|
||||
<text x="100" y="294" style="text-anchor:start">BenchmarkIndexSelector</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="300" width="27" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="644" y="315" style="text-anchor:start">-9.32%</text>
|
||||
</g>
|
||||
<text x="100" y="320" style="text-anchor:start">BenchmarkIndexOfNode</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="326" width="7" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="624" y="341" style="text-anchor:start">-2.48%</text>
|
||||
</g>
|
||||
<text x="100" y="346" style="text-anchor:start">BenchmarkIndexOfSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="352" width="104" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="721" y="367" style="text-anchor:start">-34.96%</text>
|
||||
</g>
|
||||
<text x="100" y="372" style="text-anchor:start">BenchmarkMetalReviewExample</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="378" width="177" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="794" y="393" style="text-anchor:start">-59.16%</text>
|
||||
</g>
|
||||
<text x="100" y="398" style="text-anchor:start">BenchmarkAdd</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="404" width="0" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="617" y="419" style="text-anchor:start">+0.00%</text>
|
||||
</g>
|
||||
<text x="100" y="424" style="text-anchor:start">BenchmarkAddSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="602" y="430" width="10" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="597" y="445" style="text-anchor:end">+3.47%</text>
|
||||
</g>
|
||||
<text x="100" y="450" style="text-anchor:start">BenchmarkAddNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="456" width="7" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="624" y="471" style="text-anchor:start">-2.51%</text>
|
||||
</g>
|
||||
<text x="100" y="476" style="text-anchor:start">BenchmarkAndSelf</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="482" width="41" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="658" y="497" style="text-anchor:start">-13.96%</text>
|
||||
</g>
|
||||
<text x="100" y="502" style="text-anchor:start">BenchmarkFilter</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="508" width="43" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="660" y="523" style="text-anchor:start">-14.53%</text>
|
||||
</g>
|
||||
<text x="100" y="528" style="text-anchor:start">BenchmarkNot</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="534" width="11" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="628" y="549" style="text-anchor:start">-3.81%</text>
|
||||
</g>
|
||||
<text x="100" y="554" style="text-anchor:start">BenchmarkFilterFunction</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="560" width="8" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="625" y="575" style="text-anchor:start">-2.83%</text>
|
||||
</g>
|
||||
<text x="100" y="580" style="text-anchor:start">BenchmarkNotFunction</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="586" width="13" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="630" y="601" style="text-anchor:start">-4.63%</text>
|
||||
</g>
|
||||
<text x="100" y="606" style="text-anchor:start">BenchmarkFilterNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="612" width="6" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="623" y="627" style="text-anchor:start">-2.32%</text>
|
||||
</g>
|
||||
<text x="100" y="632" style="text-anchor:start">BenchmarkNotNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="638" width="12" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="629" y="653" style="text-anchor:start">-4.23%</text>
|
||||
</g>
|
||||
<text x="100" y="658" style="text-anchor:start">BenchmarkFilterSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="664" width="9" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="626" y="679" style="text-anchor:start">-3.31%</text>
|
||||
</g>
|
||||
<text x="100" y="684" style="text-anchor:start">BenchmarkNotSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="690" width="101" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="718" y="705" style="text-anchor:start">-33.69%</text>
|
||||
</g>
|
||||
<text x="100" y="710" style="text-anchor:start">BenchmarkHas</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="716" width="13" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="630" y="731" style="text-anchor:start">-4.53%</text>
|
||||
</g>
|
||||
<text x="100" y="736" style="text-anchor:start">BenchmarkHasNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="742" width="15" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="632" y="757" style="text-anchor:start">-5.30%</text>
|
||||
</g>
|
||||
<text x="100" y="762" style="text-anchor:start">BenchmarkHasSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="578" y="768" width="34" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="573" y="783" style="text-anchor:end">+11.35%</text>
|
||||
</g>
|
||||
<text x="100" y="788" style="text-anchor:start">BenchmarkEnd</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="794" width="9" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="626" y="809" style="text-anchor:start">-3.33%</text>
|
||||
</g>
|
||||
<text x="100" y="814" style="text-anchor:start">BenchmarkEach</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="820" width="27" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="644" y="835" style="text-anchor:start">-9.16%</text>
|
||||
</g>
|
||||
<text x="100" y="840" style="text-anchor:start">BenchmarkMap</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="846" width="57" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="674" y="861" style="text-anchor:start">-19.15%</text>
|
||||
</g>
|
||||
<text x="100" y="866" style="text-anchor:start">BenchmarkAttr</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="872" width="9" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="626" y="887" style="text-anchor:start">-3.24%</text>
|
||||
</g>
|
||||
<text x="100" y="892" style="text-anchor:start">BenchmarkText</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="898" width="183" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="800" y="913" style="text-anchor:start">-61.25%</text>
|
||||
</g>
|
||||
<text x="100" y="918" style="text-anchor:start">BenchmarkLength</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="924" width="35" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="652" y="939" style="text-anchor:start">-11.92%</text>
|
||||
</g>
|
||||
<text x="100" y="944" style="text-anchor:start">BenchmarkHtml</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="950" width="49" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="666" y="965" style="text-anchor:start">-16.46%</text>
|
||||
</g>
|
||||
<text x="100" y="970" style="text-anchor:start">BenchmarkIs</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="976" width="81" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="698" y="991" style="text-anchor:start">-27.31%</text>
|
||||
</g>
|
||||
<text x="100" y="996" style="text-anchor:start">BenchmarkIsPositional</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1002" width="40" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="657" y="1017" style="text-anchor:start">-13.49%</text>
|
||||
</g>
|
||||
<text x="100" y="1022" style="text-anchor:start">BenchmarkIsFunction</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1028" width="5" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="622" y="1043" style="text-anchor:start">-1.71%</text>
|
||||
</g>
|
||||
<text x="100" y="1048" style="text-anchor:start">BenchmarkIsSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1054" width="9" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="626" y="1069" style="text-anchor:start">-3.03%</text>
|
||||
</g>
|
||||
<text x="100" y="1074" style="text-anchor:start">BenchmarkIsNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1080" width="60" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="677" y="1095" style="text-anchor:start">-20.30%</text>
|
||||
</g>
|
||||
<text x="100" y="1100" style="text-anchor:start">BenchmarkHasClass</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1106" width="33" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="650" y="1121" style="text-anchor:start">-11.29%</text>
|
||||
</g>
|
||||
<text x="100" y="1126" style="text-anchor:start">BenchmarkContains</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1132" width="152" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="769" y="1147" style="text-anchor:start">-50.88%</text>
|
||||
</g>
|
||||
<text x="100" y="1152" style="text-anchor:start">BenchmarkFind</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1158" width="135" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="752" y="1173" style="text-anchor:start">-45.28%</text>
|
||||
</g>
|
||||
<text x="100" y="1178" style="text-anchor:start">BenchmarkFindWithinSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="544" y="1184" width="68" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="539" y="1199" style="text-anchor:end">+22.95%</text>
|
||||
</g>
|
||||
<text x="100" y="1204" style="text-anchor:start">BenchmarkFindSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="544" y="1210" width="68" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="539" y="1225" style="text-anchor:end">+22.68%</text>
|
||||
</g>
|
||||
<text x="100" y="1230" style="text-anchor:start">BenchmarkFindNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1236" width="195" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="812" y="1251" style="text-anchor:start">-65.08%</text>
|
||||
</g>
|
||||
<text x="100" y="1256" style="text-anchor:start">BenchmarkContents</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1262" width="179" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="796" y="1277" style="text-anchor:start">-59.77%</text>
|
||||
</g>
|
||||
<text x="100" y="1282" style="text-anchor:start">BenchmarkContentsFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1288" width="192" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="809" y="1303" style="text-anchor:start">-64.31%</text>
|
||||
</g>
|
||||
<text x="100" y="1308" style="text-anchor:start">BenchmarkChildren</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1314" width="118" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="735" y="1329" style="text-anchor:start">-39.56%</text>
|
||||
</g>
|
||||
<text x="100" y="1334" style="text-anchor:start">BenchmarkChildrenFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1340" width="19" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="636" y="1355" style="text-anchor:start">-6.61%</text>
|
||||
</g>
|
||||
<text x="100" y="1360" style="text-anchor:start">BenchmarkParent</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1366" width="32" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="649" y="1381" style="text-anchor:start">-10.92%</text>
|
||||
</g>
|
||||
<text x="100" y="1386" style="text-anchor:start">BenchmarkParentFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1392" width="5" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="622" y="1407" style="text-anchor:start">-1.72%</text>
|
||||
</g>
|
||||
<text x="100" y="1412" style="text-anchor:start">BenchmarkParents</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1418" width="7" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="624" y="1433" style="text-anchor:start">-2.37%</text>
|
||||
</g>
|
||||
<text x="100" y="1438" style="text-anchor:start">BenchmarkParentsFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1444" width="142" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="759" y="1459" style="text-anchor:start">-47.60%</text>
|
||||
</g>
|
||||
<text x="100" y="1464" style="text-anchor:start">BenchmarkParentsUntil</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1470" width="109" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="726" y="1485" style="text-anchor:start">-36.39%</text>
|
||||
</g>
|
||||
<text x="100" y="1490" style="text-anchor:start">BenchmarkParentsUntilSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1496" width="107" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="724" y="1511" style="text-anchor:start">-35.99%</text>
|
||||
</g>
|
||||
<text x="100" y="1516" style="text-anchor:start">BenchmarkParentsUntilNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1522" width="146" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="763" y="1537" style="text-anchor:start">-48.84%</text>
|
||||
</g>
|
||||
<text x="100" y="1542" style="text-anchor:start">BenchmarkParentsFilteredUntil</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1548" width="98" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="715" y="1563" style="text-anchor:start">-32.75%</text>
|
||||
</g>
|
||||
<text x="100" y="1568" style="text-anchor:start">BenchmarkParentsFilteredUntilSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1574" width="99" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="716" y="1589" style="text-anchor:start">-33.12%</text>
|
||||
</g>
|
||||
<text x="100" y="1594" style="text-anchor:start">BenchmarkParentsFilteredUntilNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1600" width="89" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="706" y="1615" style="text-anchor:start">-29.78%</text>
|
||||
</g>
|
||||
<text x="100" y="1620" style="text-anchor:start">BenchmarkSiblings</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1626" width="92" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="709" y="1641" style="text-anchor:start">-30.89%</text>
|
||||
</g>
|
||||
<text x="100" y="1646" style="text-anchor:start">BenchmarkSiblingsFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1652" width="204" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="821" y="1667" style="text-anchor:start">-68.19%</text>
|
||||
</g>
|
||||
<text x="100" y="1672" style="text-anchor:start">BenchmarkNext</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1678" width="199" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="816" y="1693" style="text-anchor:start">-66.59%</text>
|
||||
</g>
|
||||
<text x="100" y="1698" style="text-anchor:start">BenchmarkNextFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1704" width="93" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="710" y="1719" style="text-anchor:start">-31.08%</text>
|
||||
</g>
|
||||
<text x="100" y="1724" style="text-anchor:start">BenchmarkNextAll</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1730" width="90" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="707" y="1745" style="text-anchor:start">-30.03%</text>
|
||||
</g>
|
||||
<text x="100" y="1750" style="text-anchor:start">BenchmarkNextAllFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1756" width="204" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="821" y="1771" style="text-anchor:start">-68.32%</text>
|
||||
</g>
|
||||
<text x="100" y="1776" style="text-anchor:start">BenchmarkPrev</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1782" width="199" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="816" y="1797" style="text-anchor:start">-66.65%</text>
|
||||
</g>
|
||||
<text x="100" y="1802" style="text-anchor:start">BenchmarkPrevFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1808" width="129" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="746" y="1823" style="text-anchor:start">-43.33%</text>
|
||||
</g>
|
||||
<text x="100" y="1828" style="text-anchor:start">BenchmarkPrevAll</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1834" width="129" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="746" y="1849" style="text-anchor:start">-43.24%</text>
|
||||
</g>
|
||||
<text x="100" y="1854" style="text-anchor:start">BenchmarkPrevAllFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1860" width="162" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="779" y="1875" style="text-anchor:start">-54.27%</text>
|
||||
</g>
|
||||
<text x="100" y="1880" style="text-anchor:start">BenchmarkNextUntil</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1886" width="113" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="730" y="1901" style="text-anchor:start">-37.90%</text>
|
||||
</g>
|
||||
<text x="100" y="1906" style="text-anchor:start">BenchmarkNextUntilSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1912" width="129" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="746" y="1927" style="text-anchor:start">-43.21%</text>
|
||||
</g>
|
||||
<text x="100" y="1932" style="text-anchor:start">BenchmarkNextUntilNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1938" width="147" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="764" y="1953" style="text-anchor:start">-49.33%</text>
|
||||
</g>
|
||||
<text x="100" y="1958" style="text-anchor:start">BenchmarkPrevUntil</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1964" width="111" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="728" y="1979" style="text-anchor:start">-37.02%</text>
|
||||
</g>
|
||||
<text x="100" y="1984" style="text-anchor:start">BenchmarkPrevUntilSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1990" width="133" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="750" y="2005" style="text-anchor:start">-44.59%</text>
|
||||
</g>
|
||||
<text x="100" y="2010" style="text-anchor:start">BenchmarkPrevUntilNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2016" width="173" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="790" y="2031" style="text-anchor:start">-57.79%</text>
|
||||
</g>
|
||||
<text x="100" y="2036" style="text-anchor:start">BenchmarkNextFilteredUntil</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2042" width="109" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="726" y="2057" style="text-anchor:start">-36.61%</text>
|
||||
</g>
|
||||
<text x="100" y="2062" style="text-anchor:start">BenchmarkNextFilteredUntilSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2068" width="113" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="730" y="2083" style="text-anchor:start">-37.81%</text>
|
||||
</g>
|
||||
<text x="100" y="2088" style="text-anchor:start">BenchmarkNextFilteredUntilNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2094" width="177" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="794" y="2109" style="text-anchor:start">-59.21%</text>
|
||||
</g>
|
||||
<text x="100" y="2114" style="text-anchor:start">BenchmarkPrevFilteredUntil</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2120" width="108" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="725" y="2135" style="text-anchor:start">-36.20%</text>
|
||||
</g>
|
||||
<text x="100" y="2140" style="text-anchor:start">BenchmarkPrevFilteredUntilSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2146" width="108" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="725" y="2161" style="text-anchor:start">-36.05%</text>
|
||||
</g>
|
||||
<text x="100" y="2166" style="text-anchor:start">BenchmarkPrevFilteredUntilNodes</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 21 KiB |
@@ -0,0 +1,420 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Generated by SVGo -->
|
||||
<svg width="1024" height="768"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g style="font-size:20px;font-family:sans-serif">
|
||||
<rect x="0" y="0" width="1024" height="768" style="fill:white"/>
|
||||
<text x="100" y="50" style="font-size:150%"></text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="606" y="118" width="6" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="601" y="133" style="text-anchor:end">+2.12%</text>
|
||||
</g>
|
||||
<text x="100" y="138" style="text-anchor:start">BenchmarkFirst</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="609" y="144" width="3" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="604" y="159" style="text-anchor:end">+1.06%</text>
|
||||
</g>
|
||||
<text x="100" y="164" style="text-anchor:start">BenchmarkLast</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="602" y="170" width="10" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="597" y="185" style="text-anchor:end">+3.63%</text>
|
||||
</g>
|
||||
<text x="100" y="190" style="text-anchor:start">BenchmarkEq</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="604" y="196" width="8" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="599" y="211" style="text-anchor:end">+2.67%</text>
|
||||
</g>
|
||||
<text x="100" y="216" style="text-anchor:start">BenchmarkSlice</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="222" width="72" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="689" y="237" style="text-anchor:start">-24.26%</text>
|
||||
</g>
|
||||
<text x="100" y="242" style="text-anchor:start">BenchmarkGet</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="248" width="125" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="742" y="263" style="text-anchor:start">-41.71%</text>
|
||||
</g>
|
||||
<text x="100" y="268" style="text-anchor:start">BenchmarkIndex</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="274" width="151" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="768" y="289" style="text-anchor:start">-50.42%</text>
|
||||
</g>
|
||||
<text x="100" y="294" style="text-anchor:start">BenchmarkIndexSelector</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="595" y="300" width="17" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="590" y="315" style="text-anchor:end">+5.94%</text>
|
||||
</g>
|
||||
<text x="100" y="320" style="text-anchor:start">BenchmarkIndexOfNode</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="588" y="326" width="24" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="583" y="341" style="text-anchor:end">+8.26%</text>
|
||||
</g>
|
||||
<text x="100" y="346" style="text-anchor:start">BenchmarkIndexOfSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="352" width="98" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="715" y="367" style="text-anchor:start">-32.94%</text>
|
||||
</g>
|
||||
<text x="100" y="372" style="text-anchor:start">BenchmarkMetalReviewExample</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="378" width="170" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="787" y="393" style="text-anchor:start">-56.84%</text>
|
||||
</g>
|
||||
<text x="100" y="398" style="text-anchor:start">BenchmarkAdd</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="593" y="404" width="19" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="588" y="419" style="text-anchor:end">+6.63%</text>
|
||||
</g>
|
||||
<text x="100" y="424" style="text-anchor:start">BenchmarkAddSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="584" y="430" width="28" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="579" y="445" style="text-anchor:end">+9.42%</text>
|
||||
</g>
|
||||
<text x="100" y="450" style="text-anchor:start">BenchmarkAddNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="604" y="456" width="8" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="599" y="471" style="text-anchor:end">+2.93%</text>
|
||||
</g>
|
||||
<text x="100" y="476" style="text-anchor:start">BenchmarkAndSelf</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="482" width="41" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="658" y="497" style="text-anchor:start">-13.75%</text>
|
||||
</g>
|
||||
<text x="100" y="502" style="text-anchor:start">BenchmarkFilter</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="508" width="44" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="661" y="523" style="text-anchor:start">-14.90%</text>
|
||||
</g>
|
||||
<text x="100" y="528" style="text-anchor:start">BenchmarkNot</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="609" y="534" width="3" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="604" y="549" style="text-anchor:end">+1.07%</text>
|
||||
</g>
|
||||
<text x="100" y="554" style="text-anchor:start">BenchmarkFilterFunction</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="598" y="560" width="14" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="593" y="575" style="text-anchor:end">+4.91%</text>
|
||||
</g>
|
||||
<text x="100" y="580" style="text-anchor:start">BenchmarkNotFunction</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="609" y="586" width="3" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="604" y="601" style="text-anchor:end">+1.03%</text>
|
||||
</g>
|
||||
<text x="100" y="606" style="text-anchor:start">BenchmarkFilterNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="600" y="612" width="12" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="595" y="627" style="text-anchor:end">+4.22%</text>
|
||||
</g>
|
||||
<text x="100" y="632" style="text-anchor:start">BenchmarkNotNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="638" width="3" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="620" y="653" style="text-anchor:start">-1.00%</text>
|
||||
</g>
|
||||
<text x="100" y="658" style="text-anchor:start">BenchmarkFilterSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="600" y="664" width="12" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="595" y="679" style="text-anchor:end">+4.00%</text>
|
||||
</g>
|
||||
<text x="100" y="684" style="text-anchor:start">BenchmarkNotSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="690" width="96" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="713" y="705" style="text-anchor:start">-32.12%</text>
|
||||
</g>
|
||||
<text x="100" y="710" style="text-anchor:start">BenchmarkHas</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="608" y="716" width="4" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="603" y="731" style="text-anchor:end">+1.59%</text>
|
||||
</g>
|
||||
<text x="100" y="736" style="text-anchor:start">BenchmarkHasNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="608" y="742" width="4" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="603" y="757" style="text-anchor:end">+1.56%</text>
|
||||
</g>
|
||||
<text x="100" y="762" style="text-anchor:start">BenchmarkHasSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="566" y="768" width="46" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="561" y="783" style="text-anchor:end">+15.54%</text>
|
||||
</g>
|
||||
<text x="100" y="788" style="text-anchor:start">BenchmarkEnd</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="607" y="794" width="5" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="602" y="809" style="text-anchor:end">+1.77%</text>
|
||||
</g>
|
||||
<text x="100" y="814" style="text-anchor:start">BenchmarkEach</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="820" width="10" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="627" y="835" style="text-anchor:start">-3.61%</text>
|
||||
</g>
|
||||
<text x="100" y="840" style="text-anchor:start">BenchmarkMap</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="846" width="49" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="666" y="861" style="text-anchor:start">-16.48%</text>
|
||||
</g>
|
||||
<text x="100" y="866" style="text-anchor:start">BenchmarkAttr</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="609" y="872" width="3" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="604" y="887" style="text-anchor:end">+1.33%</text>
|
||||
</g>
|
||||
<text x="100" y="892" style="text-anchor:start">BenchmarkText</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="898" width="177" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="794" y="913" style="text-anchor:start">-59.21%</text>
|
||||
</g>
|
||||
<text x="100" y="918" style="text-anchor:start">BenchmarkLength</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="924" width="27" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="644" y="939" style="text-anchor:start">-9.01%</text>
|
||||
</g>
|
||||
<text x="100" y="944" style="text-anchor:start">BenchmarkHtml</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="950" width="50" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="667" y="965" style="text-anchor:start">-16.73%</text>
|
||||
</g>
|
||||
<text x="100" y="970" style="text-anchor:start">BenchmarkIs</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="976" width="75" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="692" y="991" style="text-anchor:start">-25.08%</text>
|
||||
</g>
|
||||
<text x="100" y="996" style="text-anchor:start">BenchmarkIsPositional</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1002" width="34" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="651" y="1017" style="text-anchor:start">-11.55%</text>
|
||||
</g>
|
||||
<text x="100" y="1022" style="text-anchor:start">BenchmarkIsFunction</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="609" y="1028" width="3" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="604" y="1043" style="text-anchor:end">+1.28%</text>
|
||||
</g>
|
||||
<text x="100" y="1048" style="text-anchor:start">BenchmarkIsSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="606" y="1054" width="6" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="601" y="1069" style="text-anchor:end">+2.10%</text>
|
||||
</g>
|
||||
<text x="100" y="1074" style="text-anchor:start">BenchmarkIsNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1080" width="47" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="664" y="1095" style="text-anchor:start">-15.99%</text>
|
||||
</g>
|
||||
<text x="100" y="1100" style="text-anchor:start">BenchmarkHasClass</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1106" width="7" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="624" y="1121" style="text-anchor:start">-2.65%</text>
|
||||
</g>
|
||||
<text x="100" y="1126" style="text-anchor:start">BenchmarkContains</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1132" width="145" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="762" y="1147" style="text-anchor:start">-48.54%</text>
|
||||
</g>
|
||||
<text x="100" y="1152" style="text-anchor:start">BenchmarkFind</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1158" width="128" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="745" y="1173" style="text-anchor:start">-42.71%</text>
|
||||
</g>
|
||||
<text x="100" y="1178" style="text-anchor:start">BenchmarkFindWithinSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="526" y="1184" width="86" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="521" y="1199" style="text-anchor:end">+28.77%</text>
|
||||
</g>
|
||||
<text x="100" y="1204" style="text-anchor:start">BenchmarkFindSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="527" y="1210" width="85" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="522" y="1225" style="text-anchor:end">+28.47%</text>
|
||||
</g>
|
||||
<text x="100" y="1230" style="text-anchor:start">BenchmarkFindNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1236" width="188" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="805" y="1251" style="text-anchor:start">-62.84%</text>
|
||||
</g>
|
||||
<text x="100" y="1256" style="text-anchor:start">BenchmarkContents</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1262" width="174" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="791" y="1277" style="text-anchor:start">-58.06%</text>
|
||||
</g>
|
||||
<text x="100" y="1282" style="text-anchor:start">BenchmarkContentsFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1288" width="189" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="806" y="1303" style="text-anchor:start">-63.13%</text>
|
||||
</g>
|
||||
<text x="100" y="1308" style="text-anchor:start">BenchmarkChildren</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1314" width="114" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="731" y="1329" style="text-anchor:start">-38.24%</text>
|
||||
</g>
|
||||
<text x="100" y="1334" style="text-anchor:start">BenchmarkChildrenFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1340" width="10" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="627" y="1355" style="text-anchor:start">-3.66%</text>
|
||||
</g>
|
||||
<text x="100" y="1360" style="text-anchor:start">BenchmarkParent</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1366" width="18" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="635" y="1381" style="text-anchor:start">-6.06%</text>
|
||||
</g>
|
||||
<text x="100" y="1386" style="text-anchor:start">BenchmarkParentFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="602" y="1392" width="10" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="597" y="1407" style="text-anchor:end">+3.64%</text>
|
||||
</g>
|
||||
<text x="100" y="1412" style="text-anchor:start">BenchmarkParents</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="608" y="1418" width="4" height="20" style="fill-opacity:0.3;fill:red"/>
|
||||
<text x="603" y="1433" style="text-anchor:end">+1.44%</text>
|
||||
</g>
|
||||
<text x="100" y="1438" style="text-anchor:start">BenchmarkParentsFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1444" width="133" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="750" y="1459" style="text-anchor:start">-44.35%</text>
|
||||
</g>
|
||||
<text x="100" y="1464" style="text-anchor:start">BenchmarkParentsUntil</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1470" width="95" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="712" y="1485" style="text-anchor:start">-31.99%</text>
|
||||
</g>
|
||||
<text x="100" y="1490" style="text-anchor:start">BenchmarkParentsUntilSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1496" width="97" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="714" y="1511" style="text-anchor:start">-32.62%</text>
|
||||
</g>
|
||||
<text x="100" y="1516" style="text-anchor:start">BenchmarkParentsUntilNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1522" width="137" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="754" y="1537" style="text-anchor:start">-45.83%</text>
|
||||
</g>
|
||||
<text x="100" y="1542" style="text-anchor:start">BenchmarkParentsFilteredUntil</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1548" width="90" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="707" y="1563" style="text-anchor:start">-30.05%</text>
|
||||
</g>
|
||||
<text x="100" y="1568" style="text-anchor:start">BenchmarkParentsFilteredUntilSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1574" width="89" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="706" y="1589" style="text-anchor:start">-29.97%</text>
|
||||
</g>
|
||||
<text x="100" y="1594" style="text-anchor:start">BenchmarkParentsFilteredUntilNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1600" width="77" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="694" y="1615" style="text-anchor:start">-25.96%</text>
|
||||
</g>
|
||||
<text x="100" y="1620" style="text-anchor:start">BenchmarkSiblings</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1626" width="80" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="697" y="1641" style="text-anchor:start">-26.67%</text>
|
||||
</g>
|
||||
<text x="100" y="1646" style="text-anchor:start">BenchmarkSiblingsFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1652" width="199" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="816" y="1667" style="text-anchor:start">-66.40%</text>
|
||||
</g>
|
||||
<text x="100" y="1672" style="text-anchor:start">BenchmarkNext</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1678" width="193" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="810" y="1693" style="text-anchor:start">-64.46%</text>
|
||||
</g>
|
||||
<text x="100" y="1698" style="text-anchor:start">BenchmarkNextFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1704" width="79" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="696" y="1719" style="text-anchor:start">-26.50%</text>
|
||||
</g>
|
||||
<text x="100" y="1724" style="text-anchor:start">BenchmarkNextAll</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1730" width="78" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="695" y="1745" style="text-anchor:start">-26.27%</text>
|
||||
</g>
|
||||
<text x="100" y="1750" style="text-anchor:start">BenchmarkNextAllFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1756" width="200" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="817" y="1771" style="text-anchor:start">-66.84%</text>
|
||||
</g>
|
||||
<text x="100" y="1776" style="text-anchor:start">BenchmarkPrev</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1782" width="193" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="810" y="1797" style="text-anchor:start">-64.35%</text>
|
||||
</g>
|
||||
<text x="100" y="1802" style="text-anchor:start">BenchmarkPrevFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1808" width="120" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="737" y="1823" style="text-anchor:start">-40.05%</text>
|
||||
</g>
|
||||
<text x="100" y="1828" style="text-anchor:start">BenchmarkPrevAll</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1834" width="119" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="736" y="1849" style="text-anchor:start">-39.74%</text>
|
||||
</g>
|
||||
<text x="100" y="1854" style="text-anchor:start">BenchmarkPrevAllFiltered</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1860" width="155" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="772" y="1875" style="text-anchor:start">-51.73%</text>
|
||||
</g>
|
||||
<text x="100" y="1880" style="text-anchor:start">BenchmarkNextUntil</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1886" width="100" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="717" y="1901" style="text-anchor:start">-33.42%</text>
|
||||
</g>
|
||||
<text x="100" y="1906" style="text-anchor:start">BenchmarkNextUntilSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1912" width="121" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="738" y="1927" style="text-anchor:start">-40.42%</text>
|
||||
</g>
|
||||
<text x="100" y="1932" style="text-anchor:start">BenchmarkNextUntilNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1938" width="140" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="757" y="1953" style="text-anchor:start">-46.87%</text>
|
||||
</g>
|
||||
<text x="100" y="1958" style="text-anchor:start">BenchmarkPrevUntil</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1964" width="99" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="716" y="1979" style="text-anchor:start">-33.14%</text>
|
||||
</g>
|
||||
<text x="100" y="1984" style="text-anchor:start">BenchmarkPrevUntilSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="1990" width="123" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="740" y="2005" style="text-anchor:start">-41.19%</text>
|
||||
</g>
|
||||
<text x="100" y="2010" style="text-anchor:start">BenchmarkPrevUntilNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2016" width="167" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="784" y="2031" style="text-anchor:start">-55.92%</text>
|
||||
</g>
|
||||
<text x="100" y="2036" style="text-anchor:start">BenchmarkNextFilteredUntil</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2042" width="97" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="714" y="2057" style="text-anchor:start">-32.49%</text>
|
||||
</g>
|
||||
<text x="100" y="2062" style="text-anchor:start">BenchmarkNextFilteredUntilSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2068" width="99" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="716" y="2083" style="text-anchor:start">-33.00%</text>
|
||||
</g>
|
||||
<text x="100" y="2088" style="text-anchor:start">BenchmarkNextFilteredUntilNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2094" width="175" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="792" y="2109" style="text-anchor:start">-58.54%</text>
|
||||
</g>
|
||||
<text x="100" y="2114" style="text-anchor:start">BenchmarkPrevFilteredUntil</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2120" width="101" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="718" y="2135" style="text-anchor:start">-33.80%</text>
|
||||
</g>
|
||||
<text x="100" y="2140" style="text-anchor:start">BenchmarkPrevFilteredUntilSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2146" width="100" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="717" y="2161" style="text-anchor:start">-33.44%</text>
|
||||
</g>
|
||||
<text x="100" y="2166" style="text-anchor:start">BenchmarkPrevFilteredUntilNodes</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2172" width="74" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="691" y="2187" style="text-anchor:start">-24.82%</text>
|
||||
</g>
|
||||
<text x="100" y="2192" style="text-anchor:start">BenchmarkClosest</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2198" width="103" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="720" y="2213" style="text-anchor:start">-34.45%</text>
|
||||
</g>
|
||||
<text x="100" y="2218" style="text-anchor:start">BenchmarkClosestSelection</text>
|
||||
<g style="font-style:italic;font-size:75%">
|
||||
<rect x="612" y="2224" width="105" height="20" style="fill-opacity:0.3;fill:green"/>
|
||||
<text x="722" y="2239" style="text-anchor:start">-35.30%</text>
|
||||
</g>
|
||||
<text x="100" y="2244" style="text-anchor:start">BenchmarkClosestNodes</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1,470 @@
|
||||
PASS
|
||||
BenchmarkFirst 20000000 96.3 ns/op
|
||||
BenchmarkLast 20000000 95.7 ns/op
|
||||
BenchmarkEq 20000000 97.1 ns/op
|
||||
BenchmarkSlice 20000000 92.3 ns/op
|
||||
BenchmarkGet 1000000000 2.06 ns/op
|
||||
BenchmarkIndex 1000000 1069 ns/op
|
||||
--- BENCH: BenchmarkIndex
|
||||
bench_array_test.go:73: Index=3
|
||||
bench_array_test.go:73: Index=3
|
||||
bench_array_test.go:73: Index=3
|
||||
bench_array_test.go:73: Index=3
|
||||
BenchmarkIndexSelector 100000 26750 ns/op
|
||||
--- BENCH: BenchmarkIndexSelector
|
||||
bench_array_test.go:85: IndexSelector=4
|
||||
bench_array_test.go:85: IndexSelector=4
|
||||
bench_array_test.go:85: IndexSelector=4
|
||||
bench_array_test.go:85: IndexSelector=4
|
||||
BenchmarkIndexOfNode 100000000 10.7 ns/op
|
||||
--- BENCH: BenchmarkIndexOfNode
|
||||
bench_array_test.go:99: IndexOfNode=2
|
||||
bench_array_test.go:99: IndexOfNode=2
|
||||
bench_array_test.go:99: IndexOfNode=2
|
||||
bench_array_test.go:99: IndexOfNode=2
|
||||
bench_array_test.go:99: IndexOfNode=2
|
||||
BenchmarkIndexOfSelection 100000000 11.8 ns/op
|
||||
--- BENCH: BenchmarkIndexOfSelection
|
||||
bench_array_test.go:111: IndexOfSelection=2
|
||||
bench_array_test.go:111: IndexOfSelection=2
|
||||
bench_array_test.go:111: IndexOfSelection=2
|
||||
bench_array_test.go:111: IndexOfSelection=2
|
||||
bench_array_test.go:111: IndexOfSelection=2
|
||||
BenchmarkMetalReviewExample 10000 219078 ns/op
|
||||
--- BENCH: BenchmarkMetalReviewExample
|
||||
bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5).
|
||||
Review 1: Over Your Threshold - Facticity (6.0).
|
||||
Review 2: Nuclear Death Terror - Chaos Reigns (7.5).
|
||||
Review 3: Evoken - Atra Mors (9.5).
|
||||
|
||||
bench_example_test.go:41: MetalReviewExample=10
|
||||
bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5).
|
||||
Review 1: Over Your Threshold - Facticity (6.0).
|
||||
Review 2: Nuclear Death Terror - Chaos Reigns (7.5).
|
||||
Review 3: Evoken - Atra Mors (9.5).
|
||||
... [output truncated]
|
||||
BenchmarkAdd 100000 22345 ns/op
|
||||
--- BENCH: BenchmarkAdd
|
||||
bench_expand_test.go:20: Add=43
|
||||
bench_expand_test.go:20: Add=43
|
||||
bench_expand_test.go:20: Add=43
|
||||
bench_expand_test.go:20: Add=43
|
||||
BenchmarkAddSelection 10000000 209 ns/op
|
||||
--- BENCH: BenchmarkAddSelection
|
||||
bench_expand_test.go:37: AddSelection=43
|
||||
bench_expand_test.go:37: AddSelection=43
|
||||
bench_expand_test.go:37: AddSelection=43
|
||||
bench_expand_test.go:37: AddSelection=43
|
||||
bench_expand_test.go:37: AddSelection=43
|
||||
BenchmarkAddNodes 10000000 209 ns/op
|
||||
--- BENCH: BenchmarkAddNodes
|
||||
bench_expand_test.go:55: AddNodes=43
|
||||
bench_expand_test.go:55: AddNodes=43
|
||||
bench_expand_test.go:55: AddNodes=43
|
||||
bench_expand_test.go:55: AddNodes=43
|
||||
bench_expand_test.go:55: AddNodes=43
|
||||
BenchmarkAndSelf 1000000 2568 ns/op
|
||||
--- BENCH: BenchmarkAndSelf
|
||||
bench_expand_test.go:71: AndSelf=44
|
||||
bench_expand_test.go:71: AndSelf=44
|
||||
bench_expand_test.go:71: AndSelf=44
|
||||
bench_expand_test.go:71: AndSelf=44
|
||||
BenchmarkFilter 100000 26715 ns/op
|
||||
--- BENCH: BenchmarkFilter
|
||||
bench_filter_test.go:20: Filter=13
|
||||
bench_filter_test.go:20: Filter=13
|
||||
bench_filter_test.go:20: Filter=13
|
||||
bench_filter_test.go:20: Filter=13
|
||||
BenchmarkNot 50000 30058 ns/op
|
||||
--- BENCH: BenchmarkNot
|
||||
bench_filter_test.go:36: Not=371
|
||||
bench_filter_test.go:36: Not=371
|
||||
bench_filter_test.go:36: Not=371
|
||||
bench_filter_test.go:36: Not=371
|
||||
BenchmarkFilterFunction 50000 66346 ns/op
|
||||
--- BENCH: BenchmarkFilterFunction
|
||||
bench_filter_test.go:55: FilterFunction=112
|
||||
bench_filter_test.go:55: FilterFunction=112
|
||||
bench_filter_test.go:55: FilterFunction=112
|
||||
bench_filter_test.go:55: FilterFunction=112
|
||||
BenchmarkNotFunction 50000 72646 ns/op
|
||||
--- BENCH: BenchmarkNotFunction
|
||||
bench_filter_test.go:74: NotFunction=261
|
||||
bench_filter_test.go:74: NotFunction=261
|
||||
bench_filter_test.go:74: NotFunction=261
|
||||
bench_filter_test.go:74: NotFunction=261
|
||||
BenchmarkFilterNodes 50000 65493 ns/op
|
||||
--- BENCH: BenchmarkFilterNodes
|
||||
bench_filter_test.go:92: FilterNodes=2
|
||||
bench_filter_test.go:92: FilterNodes=2
|
||||
bench_filter_test.go:92: FilterNodes=2
|
||||
bench_filter_test.go:92: FilterNodes=2
|
||||
BenchmarkNotNodes 20000 79466 ns/op
|
||||
--- BENCH: BenchmarkNotNodes
|
||||
bench_filter_test.go:110: NotNodes=360
|
||||
bench_filter_test.go:110: NotNodes=360
|
||||
bench_filter_test.go:110: NotNodes=360
|
||||
bench_filter_test.go:110: NotNodes=360
|
||||
BenchmarkFilterSelection 50000 65494 ns/op
|
||||
--- BENCH: BenchmarkFilterSelection
|
||||
bench_filter_test.go:127: FilterSelection=2
|
||||
bench_filter_test.go:127: FilterSelection=2
|
||||
bench_filter_test.go:127: FilterSelection=2
|
||||
bench_filter_test.go:127: FilterSelection=2
|
||||
BenchmarkNotSelection 20000 79387 ns/op
|
||||
--- BENCH: BenchmarkNotSelection
|
||||
bench_filter_test.go:144: NotSelection=360
|
||||
bench_filter_test.go:144: NotSelection=360
|
||||
bench_filter_test.go:144: NotSelection=360
|
||||
bench_filter_test.go:144: NotSelection=360
|
||||
BenchmarkHas 5000 386571 ns/op
|
||||
--- BENCH: BenchmarkHas
|
||||
bench_filter_test.go:160: Has=13
|
||||
bench_filter_test.go:160: Has=13
|
||||
bench_filter_test.go:160: Has=13
|
||||
BenchmarkHasNodes 10000 230664 ns/op
|
||||
--- BENCH: BenchmarkHasNodes
|
||||
bench_filter_test.go:178: HasNodes=15
|
||||
bench_filter_test.go:178: HasNodes=15
|
||||
bench_filter_test.go:178: HasNodes=15
|
||||
BenchmarkHasSelection 10000 230705 ns/op
|
||||
--- BENCH: BenchmarkHasSelection
|
||||
bench_filter_test.go:195: HasSelection=15
|
||||
bench_filter_test.go:195: HasSelection=15
|
||||
bench_filter_test.go:195: HasSelection=15
|
||||
BenchmarkEnd 500000000 4.61 ns/op
|
||||
--- BENCH: BenchmarkEnd
|
||||
bench_filter_test.go:211: End=373
|
||||
bench_filter_test.go:211: End=373
|
||||
bench_filter_test.go:211: End=373
|
||||
bench_filter_test.go:211: End=373
|
||||
bench_filter_test.go:211: End=373
|
||||
bench_filter_test.go:211: End=373
|
||||
BenchmarkEach 200000 9520 ns/op
|
||||
--- BENCH: BenchmarkEach
|
||||
bench_iteration_test.go:22: Each=59
|
||||
bench_iteration_test.go:22: Each=59
|
||||
bench_iteration_test.go:22: Each=59
|
||||
bench_iteration_test.go:22: Each=59
|
||||
BenchmarkMap 100000 15960 ns/op
|
||||
--- BENCH: BenchmarkMap
|
||||
bench_iteration_test.go:41: Map=59
|
||||
bench_iteration_test.go:41: Map=59
|
||||
bench_iteration_test.go:41: Map=59
|
||||
bench_iteration_test.go:41: Map=59
|
||||
BenchmarkAttr 50000000 30.4 ns/op
|
||||
--- BENCH: BenchmarkAttr
|
||||
bench_property_test.go:16: Attr=firstHeading
|
||||
bench_property_test.go:16: Attr=firstHeading
|
||||
bench_property_test.go:16: Attr=firstHeading
|
||||
bench_property_test.go:16: Attr=firstHeading
|
||||
bench_property_test.go:16: Attr=firstHeading
|
||||
BenchmarkText 100000 18718 ns/op
|
||||
BenchmarkLength 2000000000 0.31 ns/op
|
||||
--- BENCH: BenchmarkLength
|
||||
bench_property_test.go:37: Length=14
|
||||
bench_property_test.go:37: Length=14
|
||||
bench_property_test.go:37: Length=14
|
||||
bench_property_test.go:37: Length=14
|
||||
bench_property_test.go:37: Length=14
|
||||
bench_property_test.go:37: Length=14
|
||||
BenchmarkHtml 5000000 606 ns/op
|
||||
BenchmarkIs 100000 29289 ns/op
|
||||
--- BENCH: BenchmarkIs
|
||||
bench_query_test.go:16: Is=true
|
||||
bench_query_test.go:16: Is=true
|
||||
bench_query_test.go:16: Is=true
|
||||
bench_query_test.go:16: Is=true
|
||||
BenchmarkIsPositional 100000 23834 ns/op
|
||||
--- BENCH: BenchmarkIsPositional
|
||||
bench_query_test.go:28: IsPositional=true
|
||||
bench_query_test.go:28: IsPositional=true
|
||||
bench_query_test.go:28: IsPositional=true
|
||||
bench_query_test.go:28: IsPositional=true
|
||||
BenchmarkIsFunction 1000000 2436 ns/op
|
||||
--- BENCH: BenchmarkIsFunction
|
||||
bench_query_test.go:43: IsFunction=true
|
||||
bench_query_test.go:43: IsFunction=true
|
||||
bench_query_test.go:43: IsFunction=true
|
||||
bench_query_test.go:43: IsFunction=true
|
||||
BenchmarkIsSelection 50000 67106 ns/op
|
||||
--- BENCH: BenchmarkIsSelection
|
||||
bench_query_test.go:56: IsSelection=true
|
||||
bench_query_test.go:56: IsSelection=true
|
||||
bench_query_test.go:56: IsSelection=true
|
||||
bench_query_test.go:56: IsSelection=true
|
||||
BenchmarkIsNodes 50000 66042 ns/op
|
||||
--- BENCH: BenchmarkIsNodes
|
||||
bench_query_test.go:70: IsNodes=true
|
||||
bench_query_test.go:70: IsNodes=true
|
||||
bench_query_test.go:70: IsNodes=true
|
||||
bench_query_test.go:70: IsNodes=true
|
||||
BenchmarkHasClass 5000 565347 ns/op
|
||||
--- BENCH: BenchmarkHasClass
|
||||
bench_query_test.go:82: HasClass=true
|
||||
bench_query_test.go:82: HasClass=true
|
||||
bench_query_test.go:82: HasClass=true
|
||||
BenchmarkContains 100000000 11.0 ns/op
|
||||
--- BENCH: BenchmarkContains
|
||||
bench_query_test.go:96: Contains=true
|
||||
bench_query_test.go:96: Contains=true
|
||||
bench_query_test.go:96: Contains=true
|
||||
bench_query_test.go:96: Contains=true
|
||||
bench_query_test.go:96: Contains=true
|
||||
BenchmarkFind 100000 27677 ns/op
|
||||
--- BENCH: BenchmarkFind
|
||||
bench_traversal_test.go:18: Find=41
|
||||
bench_traversal_test.go:18: Find=41
|
||||
bench_traversal_test.go:18: Find=41
|
||||
bench_traversal_test.go:18: Find=41
|
||||
BenchmarkFindWithinSelection 50000 72162 ns/op
|
||||
--- BENCH: BenchmarkFindWithinSelection
|
||||
bench_traversal_test.go:34: FindWithinSelection=39
|
||||
bench_traversal_test.go:34: FindWithinSelection=39
|
||||
bench_traversal_test.go:34: FindWithinSelection=39
|
||||
bench_traversal_test.go:34: FindWithinSelection=39
|
||||
BenchmarkFindSelection 5000 460124 ns/op
|
||||
--- BENCH: BenchmarkFindSelection
|
||||
bench_traversal_test.go:51: FindSelection=73
|
||||
bench_traversal_test.go:51: FindSelection=73
|
||||
bench_traversal_test.go:51: FindSelection=73
|
||||
BenchmarkFindNodes 5000 459390 ns/op
|
||||
--- BENCH: BenchmarkFindNodes
|
||||
bench_traversal_test.go:69: FindNodes=73
|
||||
bench_traversal_test.go:69: FindNodes=73
|
||||
bench_traversal_test.go:69: FindNodes=73
|
||||
BenchmarkContents 500000 3395 ns/op
|
||||
--- BENCH: BenchmarkContents
|
||||
bench_traversal_test.go:85: Contents=16
|
||||
bench_traversal_test.go:85: Contents=16
|
||||
bench_traversal_test.go:85: Contents=16
|
||||
bench_traversal_test.go:85: Contents=16
|
||||
BenchmarkContentsFiltered 500000 5193 ns/op
|
||||
--- BENCH: BenchmarkContentsFiltered
|
||||
bench_traversal_test.go:101: ContentsFiltered=1
|
||||
bench_traversal_test.go:101: ContentsFiltered=1
|
||||
bench_traversal_test.go:101: ContentsFiltered=1
|
||||
bench_traversal_test.go:101: ContentsFiltered=1
|
||||
BenchmarkChildren 5000000 667 ns/op
|
||||
--- BENCH: BenchmarkChildren
|
||||
bench_traversal_test.go:117: Children=2
|
||||
bench_traversal_test.go:117: Children=2
|
||||
bench_traversal_test.go:117: Children=2
|
||||
bench_traversal_test.go:117: Children=2
|
||||
bench_traversal_test.go:117: Children=2
|
||||
BenchmarkChildrenFiltered 500000 3591 ns/op
|
||||
--- BENCH: BenchmarkChildrenFiltered
|
||||
bench_traversal_test.go:133: ChildrenFiltered=2
|
||||
bench_traversal_test.go:133: ChildrenFiltered=2
|
||||
bench_traversal_test.go:133: ChildrenFiltered=2
|
||||
bench_traversal_test.go:133: ChildrenFiltered=2
|
||||
BenchmarkParent 50000 43168 ns/op
|
||||
--- BENCH: BenchmarkParent
|
||||
bench_traversal_test.go:149: Parent=55
|
||||
bench_traversal_test.go:149: Parent=55
|
||||
bench_traversal_test.go:149: Parent=55
|
||||
bench_traversal_test.go:149: Parent=55
|
||||
BenchmarkParentFiltered 50000 45836 ns/op
|
||||
--- BENCH: BenchmarkParentFiltered
|
||||
bench_traversal_test.go:165: ParentFiltered=4
|
||||
bench_traversal_test.go:165: ParentFiltered=4
|
||||
bench_traversal_test.go:165: ParentFiltered=4
|
||||
bench_traversal_test.go:165: ParentFiltered=4
|
||||
BenchmarkParents 20000 92348 ns/op
|
||||
--- BENCH: BenchmarkParents
|
||||
bench_traversal_test.go:181: Parents=73
|
||||
bench_traversal_test.go:181: Parents=73
|
||||
bench_traversal_test.go:181: Parents=73
|
||||
bench_traversal_test.go:181: Parents=73
|
||||
BenchmarkParentsFiltered 20000 95306 ns/op
|
||||
--- BENCH: BenchmarkParentsFiltered
|
||||
bench_traversal_test.go:197: ParentsFiltered=18
|
||||
bench_traversal_test.go:197: ParentsFiltered=18
|
||||
bench_traversal_test.go:197: ParentsFiltered=18
|
||||
bench_traversal_test.go:197: ParentsFiltered=18
|
||||
BenchmarkParentsUntil 50000 72782 ns/op
|
||||
--- BENCH: BenchmarkParentsUntil
|
||||
bench_traversal_test.go:213: ParentsUntil=52
|
||||
bench_traversal_test.go:213: ParentsUntil=52
|
||||
bench_traversal_test.go:213: ParentsUntil=52
|
||||
bench_traversal_test.go:213: ParentsUntil=52
|
||||
BenchmarkParentsUntilSelection 10000 157639 ns/op
|
||||
--- BENCH: BenchmarkParentsUntilSelection
|
||||
bench_traversal_test.go:230: ParentsUntilSelection=70
|
||||
bench_traversal_test.go:230: ParentsUntilSelection=70
|
||||
bench_traversal_test.go:230: ParentsUntilSelection=70
|
||||
BenchmarkParentsUntilNodes 10000 157510 ns/op
|
||||
--- BENCH: BenchmarkParentsUntilNodes
|
||||
bench_traversal_test.go:248: ParentsUntilNodes=70
|
||||
bench_traversal_test.go:248: ParentsUntilNodes=70
|
||||
bench_traversal_test.go:248: ParentsUntilNodes=70
|
||||
BenchmarkParentsFilteredUntil 100000 16987 ns/op
|
||||
--- BENCH: BenchmarkParentsFilteredUntil
|
||||
bench_traversal_test.go:264: ParentsFilteredUntil=2
|
||||
bench_traversal_test.go:264: ParentsFilteredUntil=2
|
||||
bench_traversal_test.go:264: ParentsFilteredUntil=2
|
||||
bench_traversal_test.go:264: ParentsFilteredUntil=2
|
||||
BenchmarkParentsFilteredUntilSelection 100000 21174 ns/op
|
||||
--- BENCH: BenchmarkParentsFilteredUntilSelection
|
||||
bench_traversal_test.go:281: ParentsFilteredUntilSelection=2
|
||||
bench_traversal_test.go:281: ParentsFilteredUntilSelection=2
|
||||
bench_traversal_test.go:281: ParentsFilteredUntilSelection=2
|
||||
bench_traversal_test.go:281: ParentsFilteredUntilSelection=2
|
||||
BenchmarkParentsFilteredUntilNodes 100000 21238 ns/op
|
||||
--- BENCH: BenchmarkParentsFilteredUntilNodes
|
||||
bench_traversal_test.go:299: ParentsFilteredUntilNodes=2
|
||||
bench_traversal_test.go:299: ParentsFilteredUntilNodes=2
|
||||
bench_traversal_test.go:299: ParentsFilteredUntilNodes=2
|
||||
bench_traversal_test.go:299: ParentsFilteredUntilNodes=2
|
||||
BenchmarkSiblings 50000 66536 ns/op
|
||||
--- BENCH: BenchmarkSiblings
|
||||
bench_traversal_test.go:315: Siblings=293
|
||||
bench_traversal_test.go:315: Siblings=293
|
||||
bench_traversal_test.go:315: Siblings=293
|
||||
bench_traversal_test.go:315: Siblings=293
|
||||
BenchmarkSiblingsFiltered 50000 71822 ns/op
|
||||
--- BENCH: BenchmarkSiblingsFiltered
|
||||
bench_traversal_test.go:331: SiblingsFiltered=46
|
||||
bench_traversal_test.go:331: SiblingsFiltered=46
|
||||
bench_traversal_test.go:331: SiblingsFiltered=46
|
||||
bench_traversal_test.go:331: SiblingsFiltered=46
|
||||
BenchmarkNext 200000 10745 ns/op
|
||||
--- BENCH: BenchmarkNext
|
||||
bench_traversal_test.go:347: Next=49
|
||||
bench_traversal_test.go:347: Next=49
|
||||
bench_traversal_test.go:347: Next=49
|
||||
bench_traversal_test.go:347: Next=49
|
||||
BenchmarkNextFiltered 200000 12399 ns/op
|
||||
--- BENCH: BenchmarkNextFiltered
|
||||
bench_traversal_test.go:363: NextFiltered=6
|
||||
bench_traversal_test.go:363: NextFiltered=6
|
||||
bench_traversal_test.go:363: NextFiltered=6
|
||||
bench_traversal_test.go:363: NextFiltered=6
|
||||
BenchmarkNextAll 50000 44640 ns/op
|
||||
--- BENCH: BenchmarkNextAll
|
||||
bench_traversal_test.go:379: NextAll=234
|
||||
bench_traversal_test.go:379: NextAll=234
|
||||
bench_traversal_test.go:379: NextAll=234
|
||||
bench_traversal_test.go:379: NextAll=234
|
||||
BenchmarkNextAllFiltered 50000 49713 ns/op
|
||||
--- BENCH: BenchmarkNextAllFiltered
|
||||
bench_traversal_test.go:395: NextAllFiltered=33
|
||||
bench_traversal_test.go:395: NextAllFiltered=33
|
||||
bench_traversal_test.go:395: NextAllFiltered=33
|
||||
bench_traversal_test.go:395: NextAllFiltered=33
|
||||
BenchmarkPrev 200000 10743 ns/op
|
||||
--- BENCH: BenchmarkPrev
|
||||
bench_traversal_test.go:411: Prev=49
|
||||
bench_traversal_test.go:411: Prev=49
|
||||
bench_traversal_test.go:411: Prev=49
|
||||
bench_traversal_test.go:411: Prev=49
|
||||
BenchmarkPrevFiltered 200000 12456 ns/op
|
||||
--- BENCH: BenchmarkPrevFiltered
|
||||
bench_traversal_test.go:429: PrevFiltered=7
|
||||
bench_traversal_test.go:429: PrevFiltered=7
|
||||
bench_traversal_test.go:429: PrevFiltered=7
|
||||
bench_traversal_test.go:429: PrevFiltered=7
|
||||
BenchmarkPrevAll 100000 17600 ns/op
|
||||
--- BENCH: BenchmarkPrevAll
|
||||
bench_traversal_test.go:445: PrevAll=78
|
||||
bench_traversal_test.go:445: PrevAll=78
|
||||
bench_traversal_test.go:445: PrevAll=78
|
||||
bench_traversal_test.go:445: PrevAll=78
|
||||
BenchmarkPrevAllFiltered 100000 19460 ns/op
|
||||
--- BENCH: BenchmarkPrevAllFiltered
|
||||
bench_traversal_test.go:461: PrevAllFiltered=6
|
||||
bench_traversal_test.go:461: PrevAllFiltered=6
|
||||
bench_traversal_test.go:461: PrevAllFiltered=6
|
||||
bench_traversal_test.go:461: PrevAllFiltered=6
|
||||
BenchmarkNextUntil 20000 92630 ns/op
|
||||
--- BENCH: BenchmarkNextUntil
|
||||
bench_traversal_test.go:477: NextUntil=84
|
||||
bench_traversal_test.go:477: NextUntil=84
|
||||
bench_traversal_test.go:477: NextUntil=84
|
||||
bench_traversal_test.go:477: NextUntil=84
|
||||
BenchmarkNextUntilSelection 50000 61285 ns/op
|
||||
--- BENCH: BenchmarkNextUntilSelection
|
||||
bench_traversal_test.go:494: NextUntilSelection=42
|
||||
bench_traversal_test.go:494: NextUntilSelection=42
|
||||
bench_traversal_test.go:494: NextUntilSelection=42
|
||||
bench_traversal_test.go:494: NextUntilSelection=42
|
||||
BenchmarkNextUntilNodes 100000 25859 ns/op
|
||||
--- BENCH: BenchmarkNextUntilNodes
|
||||
bench_traversal_test.go:512: NextUntilNodes=12
|
||||
bench_traversal_test.go:512: NextUntilNodes=12
|
||||
bench_traversal_test.go:512: NextUntilNodes=12
|
||||
bench_traversal_test.go:512: NextUntilNodes=12
|
||||
BenchmarkPrevUntil 10000 230236 ns/op
|
||||
--- BENCH: BenchmarkPrevUntil
|
||||
bench_traversal_test.go:528: PrevUntil=238
|
||||
bench_traversal_test.go:528: PrevUntil=238
|
||||
bench_traversal_test.go:528: PrevUntil=238
|
||||
BenchmarkPrevUntilSelection 20000 77837 ns/op
|
||||
--- BENCH: BenchmarkPrevUntilSelection
|
||||
bench_traversal_test.go:545: PrevUntilSelection=49
|
||||
bench_traversal_test.go:545: PrevUntilSelection=49
|
||||
bench_traversal_test.go:545: PrevUntilSelection=49
|
||||
bench_traversal_test.go:545: PrevUntilSelection=49
|
||||
BenchmarkPrevUntilNodes 100000 20784 ns/op
|
||||
--- BENCH: BenchmarkPrevUntilNodes
|
||||
bench_traversal_test.go:563: PrevUntilNodes=11
|
||||
bench_traversal_test.go:563: PrevUntilNodes=11
|
||||
bench_traversal_test.go:563: PrevUntilNodes=11
|
||||
bench_traversal_test.go:563: PrevUntilNodes=11
|
||||
BenchmarkNextFilteredUntil 50000 46147 ns/op
|
||||
--- BENCH: BenchmarkNextFilteredUntil
|
||||
bench_traversal_test.go:579: NextFilteredUntil=22
|
||||
bench_traversal_test.go:579: NextFilteredUntil=22
|
||||
bench_traversal_test.go:579: NextFilteredUntil=22
|
||||
bench_traversal_test.go:579: NextFilteredUntil=22
|
||||
BenchmarkNextFilteredUntilSelection 50000 67164 ns/op
|
||||
--- BENCH: BenchmarkNextFilteredUntilSelection
|
||||
bench_traversal_test.go:596: NextFilteredUntilSelection=22
|
||||
bench_traversal_test.go:596: NextFilteredUntilSelection=22
|
||||
bench_traversal_test.go:596: NextFilteredUntilSelection=22
|
||||
bench_traversal_test.go:596: NextFilteredUntilSelection=22
|
||||
BenchmarkNextFilteredUntilNodes 50000 66628 ns/op
|
||||
--- BENCH: BenchmarkNextFilteredUntilNodes
|
||||
bench_traversal_test.go:614: NextFilteredUntilNodes=22
|
||||
bench_traversal_test.go:614: NextFilteredUntilNodes=22
|
||||
bench_traversal_test.go:614: NextFilteredUntilNodes=22
|
||||
bench_traversal_test.go:614: NextFilteredUntilNodes=22
|
||||
BenchmarkPrevFilteredUntil 50000 46697 ns/op
|
||||
--- BENCH: BenchmarkPrevFilteredUntil
|
||||
bench_traversal_test.go:630: PrevFilteredUntil=20
|
||||
bench_traversal_test.go:630: PrevFilteredUntil=20
|
||||
bench_traversal_test.go:630: PrevFilteredUntil=20
|
||||
bench_traversal_test.go:630: PrevFilteredUntil=20
|
||||
BenchmarkPrevFilteredUntilSelection 50000 68646 ns/op
|
||||
--- BENCH: BenchmarkPrevFilteredUntilSelection
|
||||
bench_traversal_test.go:647: PrevFilteredUntilSelection=20
|
||||
bench_traversal_test.go:647: PrevFilteredUntilSelection=20
|
||||
bench_traversal_test.go:647: PrevFilteredUntilSelection=20
|
||||
bench_traversal_test.go:647: PrevFilteredUntilSelection=20
|
||||
BenchmarkPrevFilteredUntilNodes 50000 68745 ns/op
|
||||
--- BENCH: BenchmarkPrevFilteredUntilNodes
|
||||
bench_traversal_test.go:665: PrevFilteredUntilNodes=20
|
||||
bench_traversal_test.go:665: PrevFilteredUntilNodes=20
|
||||
bench_traversal_test.go:665: PrevFilteredUntilNodes=20
|
||||
bench_traversal_test.go:665: PrevFilteredUntilNodes=20
|
||||
BenchmarkClosest 500000 4909 ns/op
|
||||
--- BENCH: BenchmarkClosest
|
||||
bench_traversal_test.go:681: Closest=2
|
||||
bench_traversal_test.go:681: Closest=2
|
||||
bench_traversal_test.go:681: Closest=2
|
||||
bench_traversal_test.go:681: Closest=2
|
||||
BenchmarkClosestSelection 5000000 744 ns/op
|
||||
--- BENCH: BenchmarkClosestSelection
|
||||
bench_traversal_test.go:698: ClosestSelection=2
|
||||
bench_traversal_test.go:698: ClosestSelection=2
|
||||
bench_traversal_test.go:698: ClosestSelection=2
|
||||
bench_traversal_test.go:698: ClosestSelection=2
|
||||
bench_traversal_test.go:698: ClosestSelection=2
|
||||
BenchmarkClosestNodes 5000000 733 ns/op
|
||||
--- BENCH: BenchmarkClosestNodes
|
||||
bench_traversal_test.go:715: ClosestNodes=2
|
||||
bench_traversal_test.go:715: ClosestNodes=2
|
||||
bench_traversal_test.go:715: ClosestNodes=2
|
||||
bench_traversal_test.go:715: ClosestNodes=2
|
||||
bench_traversal_test.go:715: ClosestNodes=2
|
||||
ok github.com/PuerkitoBio/goquery 220.793s
|
||||
+476
@@ -0,0 +1,476 @@
|
||||
PASS
|
||||
BenchmarkFirst 20000000 95.5 ns/op
|
||||
BenchmarkLast 20000000 94.9 ns/op
|
||||
BenchmarkEq 20000000 95.7 ns/op
|
||||
BenchmarkSlice 20000000 91.7 ns/op
|
||||
BenchmarkGet 1000000000 2.05 ns/op
|
||||
BenchmarkIndex 1000000 1079 ns/op
|
||||
--- BENCH: BenchmarkIndex
|
||||
bench_array_test.go:73: Index=3
|
||||
bench_array_test.go:73: Index=3
|
||||
bench_array_test.go:73: Index=3
|
||||
bench_array_test.go:73: Index=3
|
||||
BenchmarkIndexSelector 100000 26972 ns/op
|
||||
--- BENCH: BenchmarkIndexSelector
|
||||
bench_array_test.go:85: IndexSelector=4
|
||||
bench_array_test.go:85: IndexSelector=4
|
||||
bench_array_test.go:85: IndexSelector=4
|
||||
bench_array_test.go:85: IndexSelector=4
|
||||
BenchmarkIndexOfNode 100000000 10.8 ns/op
|
||||
--- BENCH: BenchmarkIndexOfNode
|
||||
bench_array_test.go:99: IndexOfNode=2
|
||||
bench_array_test.go:99: IndexOfNode=2
|
||||
bench_array_test.go:99: IndexOfNode=2
|
||||
bench_array_test.go:99: IndexOfNode=2
|
||||
bench_array_test.go:99: IndexOfNode=2
|
||||
BenchmarkIndexOfSelection 100000000 11.7 ns/op
|
||||
--- BENCH: BenchmarkIndexOfSelection
|
||||
bench_array_test.go:111: IndexOfSelection=2
|
||||
bench_array_test.go:111: IndexOfSelection=2
|
||||
bench_array_test.go:111: IndexOfSelection=2
|
||||
bench_array_test.go:111: IndexOfSelection=2
|
||||
bench_array_test.go:111: IndexOfSelection=2
|
||||
BenchmarkMetalReviewExample 10000 213800 ns/op
|
||||
--- BENCH: BenchmarkMetalReviewExample
|
||||
bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5).
|
||||
Review 1: Over Your Threshold - Facticity (6.0).
|
||||
Review 2: Nuclear Death Terror - Chaos Reigns (7.5).
|
||||
Review 3: Evoken - Atra Mors (9.5).
|
||||
|
||||
bench_example_test.go:41: MetalReviewExample=10
|
||||
bench_example_test.go:40: Review 0: Midnight - Complete and Total Hell (8.5).
|
||||
Review 1: Over Your Threshold - Facticity (6.0).
|
||||
Review 2: Nuclear Death Terror - Chaos Reigns (7.5).
|
||||
Review 3: Evoken - Atra Mors (9.5).
|
||||
... [output truncated]
|
||||
BenchmarkAdd 100000 21811 ns/op
|
||||
--- BENCH: BenchmarkAdd
|
||||
bench_expand_test.go:20: Add=43
|
||||
bench_expand_test.go:20: Add=43
|
||||
bench_expand_test.go:20: Add=43
|
||||
bench_expand_test.go:20: Add=43
|
||||
BenchmarkAddSelection 10000000 205 ns/op
|
||||
--- BENCH: BenchmarkAddSelection
|
||||
bench_expand_test.go:37: AddSelection=43
|
||||
bench_expand_test.go:37: AddSelection=43
|
||||
bench_expand_test.go:37: AddSelection=43
|
||||
bench_expand_test.go:37: AddSelection=43
|
||||
bench_expand_test.go:37: AddSelection=43
|
||||
BenchmarkAddNodes 10000000 202 ns/op
|
||||
--- BENCH: BenchmarkAddNodes
|
||||
bench_expand_test.go:55: AddNodes=43
|
||||
bench_expand_test.go:55: AddNodes=43
|
||||
bench_expand_test.go:55: AddNodes=43
|
||||
bench_expand_test.go:55: AddNodes=43
|
||||
bench_expand_test.go:55: AddNodes=43
|
||||
BenchmarkAndSelf 1000000 2467 ns/op
|
||||
--- BENCH: BenchmarkAndSelf
|
||||
bench_expand_test.go:71: AndSelf=44
|
||||
bench_expand_test.go:71: AndSelf=44
|
||||
bench_expand_test.go:71: AndSelf=44
|
||||
bench_expand_test.go:71: AndSelf=44
|
||||
BenchmarkFilter 100000 25643 ns/op
|
||||
--- BENCH: BenchmarkFilter
|
||||
bench_filter_test.go:20: Filter=13
|
||||
bench_filter_test.go:20: Filter=13
|
||||
bench_filter_test.go:20: Filter=13
|
||||
bench_filter_test.go:20: Filter=13
|
||||
BenchmarkNot 100000 29566 ns/op
|
||||
--- BENCH: BenchmarkNot
|
||||
bench_filter_test.go:36: Not=371
|
||||
bench_filter_test.go:36: Not=371
|
||||
bench_filter_test.go:36: Not=371
|
||||
bench_filter_test.go:36: Not=371
|
||||
BenchmarkFilterFunction 50000 66894 ns/op
|
||||
--- BENCH: BenchmarkFilterFunction
|
||||
bench_filter_test.go:55: FilterFunction=112
|
||||
bench_filter_test.go:55: FilterFunction=112
|
||||
bench_filter_test.go:55: FilterFunction=112
|
||||
bench_filter_test.go:55: FilterFunction=112
|
||||
BenchmarkNotFunction 50000 72183 ns/op
|
||||
--- BENCH: BenchmarkNotFunction
|
||||
bench_filter_test.go:74: NotFunction=261
|
||||
bench_filter_test.go:74: NotFunction=261
|
||||
bench_filter_test.go:74: NotFunction=261
|
||||
bench_filter_test.go:74: NotFunction=261
|
||||
BenchmarkFilterNodes 50000 65516 ns/op
|
||||
--- BENCH: BenchmarkFilterNodes
|
||||
bench_filter_test.go:92: FilterNodes=2
|
||||
bench_filter_test.go:92: FilterNodes=2
|
||||
bench_filter_test.go:92: FilterNodes=2
|
||||
bench_filter_test.go:92: FilterNodes=2
|
||||
BenchmarkNotNodes 20000 78880 ns/op
|
||||
--- BENCH: BenchmarkNotNodes
|
||||
bench_filter_test.go:110: NotNodes=360
|
||||
bench_filter_test.go:110: NotNodes=360
|
||||
bench_filter_test.go:110: NotNodes=360
|
||||
bench_filter_test.go:110: NotNodes=360
|
||||
BenchmarkFilterSelection 50000 65232 ns/op
|
||||
--- BENCH: BenchmarkFilterSelection
|
||||
bench_filter_test.go:127: FilterSelection=2
|
||||
bench_filter_test.go:127: FilterSelection=2
|
||||
bench_filter_test.go:127: FilterSelection=2
|
||||
bench_filter_test.go:127: FilterSelection=2
|
||||
BenchmarkNotSelection 20000 78813 ns/op
|
||||
--- BENCH: BenchmarkNotSelection
|
||||
bench_filter_test.go:144: NotSelection=360
|
||||
bench_filter_test.go:144: NotSelection=360
|
||||
bench_filter_test.go:144: NotSelection=360
|
||||
bench_filter_test.go:144: NotSelection=360
|
||||
BenchmarkHas 5000 388834 ns/op
|
||||
--- BENCH: BenchmarkHas
|
||||
bench_filter_test.go:160: Has=13
|
||||
bench_filter_test.go:160: Has=13
|
||||
bench_filter_test.go:160: Has=13
|
||||
BenchmarkHasNodes 10000 228552 ns/op
|
||||
--- BENCH: BenchmarkHasNodes
|
||||
bench_filter_test.go:178: HasNodes=15
|
||||
bench_filter_test.go:178: HasNodes=15
|
||||
bench_filter_test.go:178: HasNodes=15
|
||||
BenchmarkHasSelection 10000 228365 ns/op
|
||||
--- BENCH: BenchmarkHasSelection
|
||||
bench_filter_test.go:195: HasSelection=15
|
||||
bench_filter_test.go:195: HasSelection=15
|
||||
bench_filter_test.go:195: HasSelection=15
|
||||
BenchmarkEnd 500000000 4.62 ns/op
|
||||
--- BENCH: BenchmarkEnd
|
||||
bench_filter_test.go:211: End=373
|
||||
bench_filter_test.go:211: End=373
|
||||
bench_filter_test.go:211: End=373
|
||||
bench_filter_test.go:211: End=373
|
||||
bench_filter_test.go:211: End=373
|
||||
bench_filter_test.go:211: End=373
|
||||
BenchmarkEach 200000 9548 ns/op
|
||||
--- BENCH: BenchmarkEach
|
||||
bench_iteration_test.go:22: Each=59
|
||||
bench_iteration_test.go:22: Each=59
|
||||
bench_iteration_test.go:22: Each=59
|
||||
bench_iteration_test.go:22: Each=59
|
||||
BenchmarkMap 100000 15900 ns/op
|
||||
--- BENCH: BenchmarkMap
|
||||
bench_iteration_test.go:41: Map=59
|
||||
bench_iteration_test.go:41: Map=59
|
||||
bench_iteration_test.go:41: Map=59
|
||||
bench_iteration_test.go:41: Map=59
|
||||
BenchmarkEachWithBreak 1000000 1650 ns/op
|
||||
--- BENCH: BenchmarkEachWithBreak
|
||||
bench_iteration_test.go:61: Each=10
|
||||
bench_iteration_test.go:61: Each=10
|
||||
bench_iteration_test.go:61: Each=10
|
||||
bench_iteration_test.go:61: Each=10
|
||||
BenchmarkAttr 50000000 30.5 ns/op
|
||||
--- BENCH: BenchmarkAttr
|
||||
bench_property_test.go:16: Attr=firstHeading
|
||||
bench_property_test.go:16: Attr=firstHeading
|
||||
bench_property_test.go:16: Attr=firstHeading
|
||||
bench_property_test.go:16: Attr=firstHeading
|
||||
bench_property_test.go:16: Attr=firstHeading
|
||||
BenchmarkText 100000 18873 ns/op
|
||||
BenchmarkLength 2000000000 0.31 ns/op
|
||||
--- BENCH: BenchmarkLength
|
||||
bench_property_test.go:37: Length=14
|
||||
bench_property_test.go:37: Length=14
|
||||
bench_property_test.go:37: Length=14
|
||||
bench_property_test.go:37: Length=14
|
||||
bench_property_test.go:37: Length=14
|
||||
bench_property_test.go:37: Length=14
|
||||
BenchmarkHtml 5000000 616 ns/op
|
||||
BenchmarkIs 100000 29499 ns/op
|
||||
--- BENCH: BenchmarkIs
|
||||
bench_query_test.go:16: Is=true
|
||||
bench_query_test.go:16: Is=true
|
||||
bench_query_test.go:16: Is=true
|
||||
bench_query_test.go:16: Is=true
|
||||
BenchmarkIsPositional 100000 23733 ns/op
|
||||
--- BENCH: BenchmarkIsPositional
|
||||
bench_query_test.go:28: IsPositional=true
|
||||
bench_query_test.go:28: IsPositional=true
|
||||
bench_query_test.go:28: IsPositional=true
|
||||
bench_query_test.go:28: IsPositional=true
|
||||
BenchmarkIsFunction 1000000 2404 ns/op
|
||||
--- BENCH: BenchmarkIsFunction
|
||||
bench_query_test.go:43: IsFunction=true
|
||||
bench_query_test.go:43: IsFunction=true
|
||||
bench_query_test.go:43: IsFunction=true
|
||||
bench_query_test.go:43: IsFunction=true
|
||||
BenchmarkIsSelection 50000 65376 ns/op
|
||||
--- BENCH: BenchmarkIsSelection
|
||||
bench_query_test.go:56: IsSelection=true
|
||||
bench_query_test.go:56: IsSelection=true
|
||||
bench_query_test.go:56: IsSelection=true
|
||||
bench_query_test.go:56: IsSelection=true
|
||||
BenchmarkIsNodes 50000 65322 ns/op
|
||||
--- BENCH: BenchmarkIsNodes
|
||||
bench_query_test.go:70: IsNodes=true
|
||||
bench_query_test.go:70: IsNodes=true
|
||||
bench_query_test.go:70: IsNodes=true
|
||||
bench_query_test.go:70: IsNodes=true
|
||||
BenchmarkHasClass 5000 558933 ns/op
|
||||
--- BENCH: BenchmarkHasClass
|
||||
bench_query_test.go:82: HasClass=true
|
||||
bench_query_test.go:82: HasClass=true
|
||||
bench_query_test.go:82: HasClass=true
|
||||
BenchmarkContains 100000000 11.1 ns/op
|
||||
--- BENCH: BenchmarkContains
|
||||
bench_query_test.go:96: Contains=true
|
||||
bench_query_test.go:96: Contains=true
|
||||
bench_query_test.go:96: Contains=true
|
||||
bench_query_test.go:96: Contains=true
|
||||
bench_query_test.go:96: Contains=true
|
||||
BenchmarkFind 100000 27841 ns/op
|
||||
--- BENCH: BenchmarkFind
|
||||
bench_traversal_test.go:18: Find=41
|
||||
bench_traversal_test.go:18: Find=41
|
||||
bench_traversal_test.go:18: Find=41
|
||||
bench_traversal_test.go:18: Find=41
|
||||
BenchmarkFindWithinSelection 50000 72096 ns/op
|
||||
--- BENCH: BenchmarkFindWithinSelection
|
||||
bench_traversal_test.go:34: FindWithinSelection=39
|
||||
bench_traversal_test.go:34: FindWithinSelection=39
|
||||
bench_traversal_test.go:34: FindWithinSelection=39
|
||||
bench_traversal_test.go:34: FindWithinSelection=39
|
||||
BenchmarkFindSelection 5000 457349 ns/op
|
||||
--- BENCH: BenchmarkFindSelection
|
||||
bench_traversal_test.go:51: FindSelection=73
|
||||
bench_traversal_test.go:51: FindSelection=73
|
||||
bench_traversal_test.go:51: FindSelection=73
|
||||
BenchmarkFindNodes 5000 459324 ns/op
|
||||
--- BENCH: BenchmarkFindNodes
|
||||
bench_traversal_test.go:69: FindNodes=73
|
||||
bench_traversal_test.go:69: FindNodes=73
|
||||
bench_traversal_test.go:69: FindNodes=73
|
||||
BenchmarkContents 500000 3435 ns/op
|
||||
--- BENCH: BenchmarkContents
|
||||
bench_traversal_test.go:85: Contents=16
|
||||
bench_traversal_test.go:85: Contents=16
|
||||
bench_traversal_test.go:85: Contents=16
|
||||
bench_traversal_test.go:85: Contents=16
|
||||
BenchmarkContentsFiltered 500000 5241 ns/op
|
||||
--- BENCH: BenchmarkContentsFiltered
|
||||
bench_traversal_test.go:101: ContentsFiltered=1
|
||||
bench_traversal_test.go:101: ContentsFiltered=1
|
||||
bench_traversal_test.go:101: ContentsFiltered=1
|
||||
bench_traversal_test.go:101: ContentsFiltered=1
|
||||
BenchmarkChildren 5000000 667 ns/op
|
||||
--- BENCH: BenchmarkChildren
|
||||
bench_traversal_test.go:117: Children=2
|
||||
bench_traversal_test.go:117: Children=2
|
||||
bench_traversal_test.go:117: Children=2
|
||||
bench_traversal_test.go:117: Children=2
|
||||
bench_traversal_test.go:117: Children=2
|
||||
BenchmarkChildrenFiltered 500000 3639 ns/op
|
||||
--- BENCH: BenchmarkChildrenFiltered
|
||||
bench_traversal_test.go:133: ChildrenFiltered=2
|
||||
bench_traversal_test.go:133: ChildrenFiltered=2
|
||||
bench_traversal_test.go:133: ChildrenFiltered=2
|
||||
bench_traversal_test.go:133: ChildrenFiltered=2
|
||||
BenchmarkParent 50000 44867 ns/op
|
||||
--- BENCH: BenchmarkParent
|
||||
bench_traversal_test.go:149: Parent=55
|
||||
bench_traversal_test.go:149: Parent=55
|
||||
bench_traversal_test.go:149: Parent=55
|
||||
bench_traversal_test.go:149: Parent=55
|
||||
BenchmarkParentFiltered 50000 46476 ns/op
|
||||
--- BENCH: BenchmarkParentFiltered
|
||||
bench_traversal_test.go:165: ParentFiltered=4
|
||||
bench_traversal_test.go:165: ParentFiltered=4
|
||||
bench_traversal_test.go:165: ParentFiltered=4
|
||||
bench_traversal_test.go:165: ParentFiltered=4
|
||||
BenchmarkParents 20000 92559 ns/op
|
||||
--- BENCH: BenchmarkParents
|
||||
bench_traversal_test.go:181: Parents=73
|
||||
bench_traversal_test.go:181: Parents=73
|
||||
bench_traversal_test.go:181: Parents=73
|
||||
bench_traversal_test.go:181: Parents=73
|
||||
BenchmarkParentsFiltered 20000 96142 ns/op
|
||||
--- BENCH: BenchmarkParentsFiltered
|
||||
bench_traversal_test.go:197: ParentsFiltered=18
|
||||
bench_traversal_test.go:197: ParentsFiltered=18
|
||||
bench_traversal_test.go:197: ParentsFiltered=18
|
||||
bench_traversal_test.go:197: ParentsFiltered=18
|
||||
BenchmarkParentsUntil 50000 73931 ns/op
|
||||
--- BENCH: BenchmarkParentsUntil
|
||||
bench_traversal_test.go:213: ParentsUntil=52
|
||||
bench_traversal_test.go:213: ParentsUntil=52
|
||||
bench_traversal_test.go:213: ParentsUntil=52
|
||||
bench_traversal_test.go:213: ParentsUntil=52
|
||||
BenchmarkParentsUntilSelection 10000 159820 ns/op
|
||||
--- BENCH: BenchmarkParentsUntilSelection
|
||||
bench_traversal_test.go:230: ParentsUntilSelection=70
|
||||
bench_traversal_test.go:230: ParentsUntilSelection=70
|
||||
bench_traversal_test.go:230: ParentsUntilSelection=70
|
||||
BenchmarkParentsUntilNodes 10000 158811 ns/op
|
||||
--- BENCH: BenchmarkParentsUntilNodes
|
||||
bench_traversal_test.go:248: ParentsUntilNodes=70
|
||||
bench_traversal_test.go:248: ParentsUntilNodes=70
|
||||
bench_traversal_test.go:248: ParentsUntilNodes=70
|
||||
BenchmarkParentsFilteredUntil 100000 17203 ns/op
|
||||
--- BENCH: BenchmarkParentsFilteredUntil
|
||||
bench_traversal_test.go:264: ParentsFilteredUntil=2
|
||||
bench_traversal_test.go:264: ParentsFilteredUntil=2
|
||||
bench_traversal_test.go:264: ParentsFilteredUntil=2
|
||||
bench_traversal_test.go:264: ParentsFilteredUntil=2
|
||||
BenchmarkParentsFilteredUntilSelection 100000 21358 ns/op
|
||||
--- BENCH: BenchmarkParentsFilteredUntilSelection
|
||||
bench_traversal_test.go:281: ParentsFilteredUntilSelection=2
|
||||
bench_traversal_test.go:281: ParentsFilteredUntilSelection=2
|
||||
bench_traversal_test.go:281: ParentsFilteredUntilSelection=2
|
||||
bench_traversal_test.go:281: ParentsFilteredUntilSelection=2
|
||||
BenchmarkParentsFilteredUntilNodes 100000 21338 ns/op
|
||||
--- BENCH: BenchmarkParentsFilteredUntilNodes
|
||||
bench_traversal_test.go:299: ParentsFilteredUntilNodes=2
|
||||
bench_traversal_test.go:299: ParentsFilteredUntilNodes=2
|
||||
bench_traversal_test.go:299: ParentsFilteredUntilNodes=2
|
||||
bench_traversal_test.go:299: ParentsFilteredUntilNodes=2
|
||||
BenchmarkSiblings 50000 66463 ns/op
|
||||
--- BENCH: BenchmarkSiblings
|
||||
bench_traversal_test.go:315: Siblings=293
|
||||
bench_traversal_test.go:315: Siblings=293
|
||||
bench_traversal_test.go:315: Siblings=293
|
||||
bench_traversal_test.go:315: Siblings=293
|
||||
BenchmarkSiblingsFiltered 50000 72503 ns/op
|
||||
--- BENCH: BenchmarkSiblingsFiltered
|
||||
bench_traversal_test.go:331: SiblingsFiltered=46
|
||||
bench_traversal_test.go:331: SiblingsFiltered=46
|
||||
bench_traversal_test.go:331: SiblingsFiltered=46
|
||||
bench_traversal_test.go:331: SiblingsFiltered=46
|
||||
BenchmarkNext 200000 10881 ns/op
|
||||
--- BENCH: BenchmarkNext
|
||||
bench_traversal_test.go:347: Next=49
|
||||
bench_traversal_test.go:347: Next=49
|
||||
bench_traversal_test.go:347: Next=49
|
||||
bench_traversal_test.go:347: Next=49
|
||||
BenchmarkNextFiltered 200000 12588 ns/op
|
||||
--- BENCH: BenchmarkNextFiltered
|
||||
bench_traversal_test.go:363: NextFiltered=6
|
||||
bench_traversal_test.go:363: NextFiltered=6
|
||||
bench_traversal_test.go:363: NextFiltered=6
|
||||
bench_traversal_test.go:363: NextFiltered=6
|
||||
BenchmarkNextAll 50000 45075 ns/op
|
||||
--- BENCH: BenchmarkNextAll
|
||||
bench_traversal_test.go:379: NextAll=234
|
||||
bench_traversal_test.go:379: NextAll=234
|
||||
bench_traversal_test.go:379: NextAll=234
|
||||
bench_traversal_test.go:379: NextAll=234
|
||||
BenchmarkNextAllFiltered 50000 50455 ns/op
|
||||
--- BENCH: BenchmarkNextAllFiltered
|
||||
bench_traversal_test.go:395: NextAllFiltered=33
|
||||
bench_traversal_test.go:395: NextAllFiltered=33
|
||||
bench_traversal_test.go:395: NextAllFiltered=33
|
||||
bench_traversal_test.go:395: NextAllFiltered=33
|
||||
BenchmarkPrev 200000 10933 ns/op
|
||||
--- BENCH: BenchmarkPrev
|
||||
bench_traversal_test.go:411: Prev=49
|
||||
bench_traversal_test.go:411: Prev=49
|
||||
bench_traversal_test.go:411: Prev=49
|
||||
bench_traversal_test.go:411: Prev=49
|
||||
BenchmarkPrevFiltered 200000 12579 ns/op
|
||||
--- BENCH: BenchmarkPrevFiltered
|
||||
bench_traversal_test.go:429: PrevFiltered=7
|
||||
bench_traversal_test.go:429: PrevFiltered=7
|
||||
bench_traversal_test.go:429: PrevFiltered=7
|
||||
bench_traversal_test.go:429: PrevFiltered=7
|
||||
BenchmarkPrevAll 100000 17751 ns/op
|
||||
--- BENCH: BenchmarkPrevAll
|
||||
bench_traversal_test.go:445: PrevAll=78
|
||||
bench_traversal_test.go:445: PrevAll=78
|
||||
bench_traversal_test.go:445: PrevAll=78
|
||||
bench_traversal_test.go:445: PrevAll=78
|
||||
BenchmarkPrevAllFiltered 100000 19702 ns/op
|
||||
--- BENCH: BenchmarkPrevAllFiltered
|
||||
bench_traversal_test.go:461: PrevAllFiltered=6
|
||||
bench_traversal_test.go:461: PrevAllFiltered=6
|
||||
bench_traversal_test.go:461: PrevAllFiltered=6
|
||||
bench_traversal_test.go:461: PrevAllFiltered=6
|
||||
BenchmarkNextUntil 20000 93586 ns/op
|
||||
--- BENCH: BenchmarkNextUntil
|
||||
bench_traversal_test.go:477: NextUntil=84
|
||||
bench_traversal_test.go:477: NextUntil=84
|
||||
bench_traversal_test.go:477: NextUntil=84
|
||||
bench_traversal_test.go:477: NextUntil=84
|
||||
BenchmarkNextUntilSelection 50000 61155 ns/op
|
||||
--- BENCH: BenchmarkNextUntilSelection
|
||||
bench_traversal_test.go:494: NextUntilSelection=42
|
||||
bench_traversal_test.go:494: NextUntilSelection=42
|
||||
bench_traversal_test.go:494: NextUntilSelection=42
|
||||
bench_traversal_test.go:494: NextUntilSelection=42
|
||||
BenchmarkNextUntilNodes 100000 25805 ns/op
|
||||
--- BENCH: BenchmarkNextUntilNodes
|
||||
bench_traversal_test.go:512: NextUntilNodes=12
|
||||
bench_traversal_test.go:512: NextUntilNodes=12
|
||||
bench_traversal_test.go:512: NextUntilNodes=12
|
||||
bench_traversal_test.go:512: NextUntilNodes=12
|
||||
BenchmarkPrevUntil 10000 232225 ns/op
|
||||
--- BENCH: BenchmarkPrevUntil
|
||||
bench_traversal_test.go:528: PrevUntil=238
|
||||
bench_traversal_test.go:528: PrevUntil=238
|
||||
bench_traversal_test.go:528: PrevUntil=238
|
||||
BenchmarkPrevUntilSelection 20000 78316 ns/op
|
||||
--- BENCH: BenchmarkPrevUntilSelection
|
||||
bench_traversal_test.go:545: PrevUntilSelection=49
|
||||
bench_traversal_test.go:545: PrevUntilSelection=49
|
||||
bench_traversal_test.go:545: PrevUntilSelection=49
|
||||
bench_traversal_test.go:545: PrevUntilSelection=49
|
||||
BenchmarkPrevUntilNodes 100000 20657 ns/op
|
||||
--- BENCH: BenchmarkPrevUntilNodes
|
||||
bench_traversal_test.go:563: PrevUntilNodes=11
|
||||
bench_traversal_test.go:563: PrevUntilNodes=11
|
||||
bench_traversal_test.go:563: PrevUntilNodes=11
|
||||
bench_traversal_test.go:563: PrevUntilNodes=11
|
||||
BenchmarkNextFilteredUntil 50000 46567 ns/op
|
||||
--- BENCH: BenchmarkNextFilteredUntil
|
||||
bench_traversal_test.go:579: NextFilteredUntil=22
|
||||
bench_traversal_test.go:579: NextFilteredUntil=22
|
||||
bench_traversal_test.go:579: NextFilteredUntil=22
|
||||
bench_traversal_test.go:579: NextFilteredUntil=22
|
||||
BenchmarkNextFilteredUntilSelection 50000 67227 ns/op
|
||||
--- BENCH: BenchmarkNextFilteredUntilSelection
|
||||
bench_traversal_test.go:596: NextFilteredUntilSelection=22
|
||||
bench_traversal_test.go:596: NextFilteredUntilSelection=22
|
||||
bench_traversal_test.go:596: NextFilteredUntilSelection=22
|
||||
bench_traversal_test.go:596: NextFilteredUntilSelection=22
|
||||
BenchmarkNextFilteredUntilNodes 50000 66995 ns/op
|
||||
--- BENCH: BenchmarkNextFilteredUntilNodes
|
||||
bench_traversal_test.go:614: NextFilteredUntilNodes=22
|
||||
bench_traversal_test.go:614: NextFilteredUntilNodes=22
|
||||
bench_traversal_test.go:614: NextFilteredUntilNodes=22
|
||||
bench_traversal_test.go:614: NextFilteredUntilNodes=22
|
||||
BenchmarkPrevFilteredUntil 50000 47361 ns/op
|
||||
--- BENCH: BenchmarkPrevFilteredUntil
|
||||
bench_traversal_test.go:630: PrevFilteredUntil=20
|
||||
bench_traversal_test.go:630: PrevFilteredUntil=20
|
||||
bench_traversal_test.go:630: PrevFilteredUntil=20
|
||||
bench_traversal_test.go:630: PrevFilteredUntil=20
|
||||
BenchmarkPrevFilteredUntilSelection 50000 68802 ns/op
|
||||
--- BENCH: BenchmarkPrevFilteredUntilSelection
|
||||
bench_traversal_test.go:647: PrevFilteredUntilSelection=20
|
||||
bench_traversal_test.go:647: PrevFilteredUntilSelection=20
|
||||
bench_traversal_test.go:647: PrevFilteredUntilSelection=20
|
||||
bench_traversal_test.go:647: PrevFilteredUntilSelection=20
|
||||
BenchmarkPrevFilteredUntilNodes 50000 68928 ns/op
|
||||
--- BENCH: BenchmarkPrevFilteredUntilNodes
|
||||
bench_traversal_test.go:665: PrevFilteredUntilNodes=20
|
||||
bench_traversal_test.go:665: PrevFilteredUntilNodes=20
|
||||
bench_traversal_test.go:665: PrevFilteredUntilNodes=20
|
||||
bench_traversal_test.go:665: PrevFilteredUntilNodes=20
|
||||
BenchmarkClosest 500000 4922 ns/op
|
||||
--- BENCH: BenchmarkClosest
|
||||
bench_traversal_test.go:681: Closest=2
|
||||
bench_traversal_test.go:681: Closest=2
|
||||
bench_traversal_test.go:681: Closest=2
|
||||
bench_traversal_test.go:681: Closest=2
|
||||
BenchmarkClosestSelection 5000000 738 ns/op
|
||||
--- BENCH: BenchmarkClosestSelection
|
||||
bench_traversal_test.go:698: ClosestSelection=2
|
||||
bench_traversal_test.go:698: ClosestSelection=2
|
||||
bench_traversal_test.go:698: ClosestSelection=2
|
||||
bench_traversal_test.go:698: ClosestSelection=2
|
||||
bench_traversal_test.go:698: ClosestSelection=2
|
||||
BenchmarkClosestNodes 5000000 737 ns/op
|
||||
--- BENCH: BenchmarkClosestNodes
|
||||
bench_traversal_test.go:715: ClosestNodes=2
|
||||
bench_traversal_test.go:715: ClosestNodes=2
|
||||
bench_traversal_test.go:715: ClosestNodes=2
|
||||
bench_traversal_test.go:715: ClosestNodes=2
|
||||
bench_traversal_test.go:715: ClosestNodes=2
|
||||
ok github.com/PuerkitoBio/goquery 224.003s
|
||||
@@ -40,3 +40,23 @@ func BenchmarkMap(b *testing.B) {
|
||||
}
|
||||
b.Logf("Map=%d", n)
|
||||
}
|
||||
|
||||
func BenchmarkEachWithBreak(b *testing.B) {
|
||||
var tmp, n int
|
||||
|
||||
b.StopTimer()
|
||||
sel := DocW().Find("td")
|
||||
f := func(i int, s *Selection) bool {
|
||||
tmp++
|
||||
return tmp < 10
|
||||
}
|
||||
b.StartTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
tmp = 0
|
||||
sel.EachWithBreak(f)
|
||||
if n == 0 {
|
||||
n = tmp
|
||||
}
|
||||
}
|
||||
b.Logf("Each=%d", n)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2012, Martin Angers & Contributors
|
||||
// Copyright (c) 2012-2013, Martin Angers & Contributors
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
@@ -25,17 +25,12 @@
|
||||
Package goquery implements features similar to jQuery, including the chainable
|
||||
syntax, to manipulate and query an HTML document (the modification functions of jQuery are not included).
|
||||
|
||||
It depends on Go's experimental html package, which must be installed so that it
|
||||
can be imported as "exp/html". See this tutorial on how to install it
|
||||
accordingly: http://code.google.com/p/go-wiki/wiki/InstallingExp
|
||||
|
||||
It uses Cascadia as CSS selector (similar to Sizzle for jQuery). This dependency
|
||||
is automatically installed when using "go get ..." to install GoQuery.
|
||||
It uses Cascadia as CSS selector (similar to Sizzle for jQuery).
|
||||
|
||||
To provide a chainable interface, error management is strict, and goquery panics
|
||||
if an invalid Cascadia selector is used (this is consistent with the behavior of
|
||||
jQuery/Sizzle/document.querySelectorAll, where an error is thrown). This is
|
||||
necessary since multiple return values cannot be used to allow a chainable
|
||||
necessary since multiple return values cannot be used to allow a chainable
|
||||
interface.
|
||||
|
||||
It is hosted on GitHub, along with additional documentation in the README.md
|
||||
@@ -65,6 +60,7 @@ The various methods are split into files based on the category of behavior:
|
||||
|
||||
* iteration.go : methods to loop over the selection's nodes.
|
||||
- Each()
|
||||
- EachWithBreak()
|
||||
- Map()
|
||||
|
||||
* property.go : methods that inspect and get the node's properties values.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package goquery
|
||||
|
||||
import (
|
||||
"exp/html"
|
||||
"code.google.com/p/go.net/html"
|
||||
)
|
||||
|
||||
// Add() adds the selector string's matching nodes to those in the current
|
||||
|
||||
@@ -2,7 +2,7 @@ package goquery
|
||||
|
||||
import (
|
||||
"code.google.com/p/cascadia"
|
||||
"exp/html"
|
||||
"code.google.com/p/go.net/html"
|
||||
)
|
||||
|
||||
// Filter() reduces the set of matched elements to those that match the selector string.
|
||||
|
||||
@@ -9,6 +9,19 @@ func (this *Selection) Each(f func(int, *Selection)) *Selection {
|
||||
return this
|
||||
}
|
||||
|
||||
// EachWithBreak() iterates over a Selection object, executing a function for each
|
||||
// matched element. It is identical to `Each()` except that it is possible to break
|
||||
// out of the loop by returning `false` in the callback function. It returns the
|
||||
// current Selection object.
|
||||
func (this *Selection) EachWithBreak(f func(int, *Selection) bool) *Selection {
|
||||
for i, n := range this.Nodes {
|
||||
if !f(i, newSingleSelection(n, this.document)) {
|
||||
return this
|
||||
}
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
// Map() passes each element in the current matched set through a function,
|
||||
// producing a slice of string holding the returned values.
|
||||
func (this *Selection) Map(f func(int, *Selection) string) (result []string) {
|
||||
|
||||
+16
-1
@@ -1,7 +1,7 @@
|
||||
package goquery
|
||||
|
||||
import (
|
||||
"exp/html"
|
||||
"code.google.com/p/go.net/html"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@@ -19,6 +19,21 @@ func TestEach(t *testing.T) {
|
||||
AssertLength(t, sel.Nodes, 6)
|
||||
}
|
||||
|
||||
func TestEachWithBreak(t *testing.T) {
|
||||
var cnt int
|
||||
|
||||
sel := Doc().Find(".hero-unit .row-fluid").EachWithBreak(func(i int, n *Selection) bool {
|
||||
cnt++
|
||||
t.Logf("At index %v, node %v", i, n.Nodes[0].Data)
|
||||
return false
|
||||
}).Find("a")
|
||||
|
||||
if cnt != 1 {
|
||||
t.Errorf("Expected Each() to call function 1 time, got %v times.", cnt)
|
||||
}
|
||||
AssertLength(t, sel.Nodes, 6)
|
||||
}
|
||||
|
||||
func TestEachEmptySelection(t *testing.T) {
|
||||
var cnt int
|
||||
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package goquery
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"exp/html"
|
||||
"code.google.com/p/go.net/html"
|
||||
)
|
||||
|
||||
// Attr() gets the specified attribute's value for the first element in the
|
||||
|
||||
@@ -2,11 +2,13 @@ package goquery
|
||||
|
||||
import (
|
||||
"code.google.com/p/cascadia"
|
||||
"exp/html"
|
||||
"code.google.com/p/go.net/html"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var rxClassTrim = regexp.MustCompile("[\t\r\n]")
|
||||
|
||||
// Is() checks the current matched set of elements against a selector and
|
||||
// returns true if at least one of these elements matches.
|
||||
func (this *Selection) Is(selector string) bool {
|
||||
@@ -44,14 +46,12 @@ func (this *Selection) IsNodes(nodes ...*html.Node) bool {
|
||||
// HasClass() determines whether any of the matched elements are assigned the
|
||||
// given class.
|
||||
func (this *Selection) HasClass(class string) bool {
|
||||
var rx = regexp.MustCompile("[\t\r\n]")
|
||||
|
||||
class = " " + class + " "
|
||||
for _, n := range this.Nodes {
|
||||
// Applies only to element nodes
|
||||
if n.Type == html.ElementNode {
|
||||
if elClass, ok := getAttributeValue("class", n); ok {
|
||||
elClass = rx.ReplaceAllString(" "+elClass+" ", " ")
|
||||
elClass = rxClassTrim.ReplaceAllString(" "+elClass+" ", " ")
|
||||
if strings.Index(elClass, class) > -1 {
|
||||
return true
|
||||
}
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package goquery
|
||||
|
||||
import (
|
||||
"code.google.com/p/cascadia"
|
||||
"exp/html"
|
||||
"code.google.com/p/go.net/html"
|
||||
)
|
||||
|
||||
type siblingType int
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package goquery
|
||||
|
||||
import (
|
||||
"exp/html"
|
||||
"code.google.com/p/go.net/html"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
)
|
||||
@@ -32,6 +33,26 @@ func NewDocument(url string) (d *Document, e error) {
|
||||
if e != nil {
|
||||
return
|
||||
}
|
||||
return NewDocumentFromResponse(res)
|
||||
}
|
||||
|
||||
// NewDocumentFromReader() returns a Document from a generic reader.
|
||||
// It returns an error as second value if the reader's data cannot be parsed
|
||||
// as html. It does *not* check if the reader is also an io.Closer, so the
|
||||
// provided reader is never closed by this call, it is the responsibility
|
||||
// of the caller to close it if required.
|
||||
func NewDocumentFromReader(r io.Reader) (d *Document, e error) {
|
||||
root, e := html.Parse(r)
|
||||
if e != nil {
|
||||
return nil, e
|
||||
}
|
||||
return newDocument(root, nil), nil
|
||||
}
|
||||
|
||||
// NewDocumentFromResponse() is another Document constructor that takes an http resonse as argument.
|
||||
// It loads the specified response's document, parses it, and stores the root Document
|
||||
// node, ready to be manipulated.
|
||||
func NewDocumentFromResponse(res *http.Response) (d *Document, e error) {
|
||||
defer res.Body.Close()
|
||||
|
||||
// Parse the HTML into nodes
|
||||
@@ -41,16 +62,15 @@ func NewDocument(url string) (d *Document, e error) {
|
||||
}
|
||||
|
||||
// Create and fill the document
|
||||
d = newDocument(root, res.Request.URL)
|
||||
return
|
||||
return newDocument(root, res.Request.URL), nil
|
||||
}
|
||||
|
||||
// Private constructor, make sure all fields are correctly filled.
|
||||
func newDocument(root *html.Node, url *url.URL) (d *Document) {
|
||||
func newDocument(root *html.Node, url *url.URL) *Document {
|
||||
// Create and fill the document
|
||||
d = &Document{nil, url, root}
|
||||
d := &Document{nil, url, root}
|
||||
d.Selection = newSingleSelection(root, d)
|
||||
return
|
||||
return d
|
||||
}
|
||||
|
||||
// Selection represents a collection of nodes matching some criteria. The
|
||||
|
||||
+50
-1
@@ -1,7 +1,8 @@
|
||||
package goquery
|
||||
|
||||
import (
|
||||
"exp/html"
|
||||
"bytes"
|
||||
"code.google.com/p/go.net/html"
|
||||
"fmt"
|
||||
"os"
|
||||
"testing"
|
||||
@@ -99,3 +100,51 @@ func TestNewDocument(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewDocumentFromReader(t *testing.T) {
|
||||
cases := []struct {
|
||||
src string
|
||||
err bool
|
||||
sel string
|
||||
cnt int
|
||||
}{
|
||||
0: {
|
||||
src: `
|
||||
<html>
|
||||
<head>
|
||||
<title>Test</title>
|
||||
<body>
|
||||
<h1>Hi</h1>
|
||||
</body>
|
||||
</html>`,
|
||||
sel: "h1",
|
||||
cnt: 1,
|
||||
},
|
||||
1: {
|
||||
// Actually pretty hard to make html.Parse return an error
|
||||
// based on content...
|
||||
src: `<html><body><aef<eqf>>>qq></body></ht>`,
|
||||
},
|
||||
}
|
||||
buf := bytes.NewBuffer(nil)
|
||||
|
||||
for i, c := range cases {
|
||||
buf.Reset()
|
||||
buf.WriteString(c.src)
|
||||
|
||||
d, e := NewDocumentFromReader(buf)
|
||||
if (e != nil) != c.err {
|
||||
if c.err {
|
||||
t.Errorf("[%d] - expected error, got none", i)
|
||||
} else {
|
||||
t.Errorf("[%d] - expected no error, got %s", i, e)
|
||||
}
|
||||
}
|
||||
if c.sel != "" {
|
||||
s := d.Find(c.sel)
|
||||
if s.Length() != c.cnt {
|
||||
t.Errorf("[%d] - expected %d nodes, found %d", i, c.cnt, s.Length())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
package goquery
|
||||
|
||||
import (
|
||||
"exp/html"
|
||||
"code.google.com/p/go.net/html"
|
||||
)
|
||||
|
||||
func getChildren(n *html.Node) (result []*html.Node) {
|
||||
|
||||
Reference in New Issue
Block a user