diff --git a/.github/workflows/benchmarkpr.yml b/.github/workflows/benchmarkpr.yml new file mode 100644 index 000000000..999093593 --- /dev/null +++ b/.github/workflows/benchmarkpr.yml @@ -0,0 +1,78 @@ +name: performance tracking +env: + JULIA_NUM_THREADS: 2 +on: + pull_request: + branches: + - master + - benchx + push: + branches: + - master + - benchx + tags: '*' +jobs: + benchmark: + name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} + runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.allow_failure }} + strategy: + fail-fast: false + matrix: + version: + - '1' + os: + - ubuntu-latest + arch: + - x64 + include: + - version: '1' + allow_failure: false + steps: + - uses: actions/checkout@v4 + - uses: julia-actions/setup-julia@latest + with: + version: ${{ matrix.version }} + arch: ${{ matrix.arch }} + - uses: actions/cache@v3 + env: + cache-name: cache-artifacts + with: + path: ~/.julia/artifacts + key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }} + restore-keys: | + ${{ runner.os }}-test-${{ env.cache-name }}- + ${{ runner.os }}-test- + ${{ runner.os }}- + - uses: julia-actions/julia-buildpkg@latest + - name: install dependencies + run: julia -e 'using Pkg; pkg"add PkgBenchmark BenchmarkCI@0.1"' + - name: Run benchmark judge if pull request + if: github.event_name == 'pull_request' + run: julia -e " + using BenchmarkCI, PkgBenchmark; + jd=BenchmarkCI.judge(baseline=\"origin/${GITHUB_BASE_REF}\"); + writeresults(\"targetbenchout.json\", jd.target_results); + writeresults(\"baselinebenchout.json\", jd.baseline_results); + " + - name: Post results if pull request + if: github.event_name == 'pull_request' + run: julia -e 'using BenchmarkCI; BenchmarkCI.postjudge()' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Run benchmark if push/merge + if: github.event_name == 'push' + run: julia --project=benchmark -e " + import Pkg; + Pkg.develop(path=pwd()); + Pkg.instantiate(); + using PkgBenchmark, BenchmarkTools; + br=benchmarkpkg(pwd()); + br_median = BenchmarkResults(br.name, br.commit, median(br.benchmarkgroup), br.date, br.julia_commit, br.vinfo, br.benchmarkconfig); + writeresults(\"medianbenchout.json\", br_median); + " + - uses: actions/upload-artifact@v3 + with: + name: Store benchmark result + path: ./*benchout.json + diff --git a/.gitignore b/.gitignore index b22a93a1f..c5724c2b6 100644 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,8 @@ docs/build/ docs/site/ benchmark/.results/* benchmark/.tune.jld +benchmark/Manifest.toml +.benchmarkci *.cov /Manifest.toml +notes diff --git a/benchmark/Project.toml b/benchmark/Project.toml new file mode 100644 index 000000000..bdf057eba --- /dev/null +++ b/benchmark/Project.toml @@ -0,0 +1,7 @@ +[deps] +BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" +Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[compat] +BenchmarkTools = "1" diff --git a/benchmark/benchmarks.jl b/benchmark/benchmarks.jl index 76b9c6fef..ecec72cc5 100644 --- a/benchmark/benchmarks.jl +++ b/benchmark/benchmarks.jl @@ -1,18 +1,39 @@ using BenchmarkTools using Graphs -DIGRAPHS = Dict{String,DiGraph}( +const benchdir = dirname(@__FILE__) + +const DIGRAPHS = Dict{String,DiGraph}( "complete100" => complete_digraph(100), "path500" => path_digraph(500) ) -GRAPHS = Dict{String,Graph}( +const GRAPHS = Dict{String,Graph}( "complete100" => complete_graph(100), "tutte" => smallgraph(:tutte), "path500" => path_graph(500), ) -suite = BenchmarkGroup() -include("core.jl") +serialbenchmarks = [ + "serial/core.jl", + "serial/connectivity.jl", + "serial/centrality.jl", + "serial/edges.jl", + "serial/insertions.jl", + "serial/traversals.jl", +] + +const SUITE = BenchmarkGroup() + +foreach(serialbenchmarks) do bm + include(bm) +end + +parallelbenchmarks = [ + "parallel/egonets.jl", +] + +foreach(parallelbenchmarks) do bm + include(joinpath(benchdir, bm)) +end -tune!(suite); -results = run(suite; verbose=true, seconds=10) +nothing diff --git a/benchmark/centrality.jl b/benchmark/centrality.jl deleted file mode 100644 index edbd8accb..000000000 --- a/benchmark/centrality.jl +++ /dev/null @@ -1,26 +0,0 @@ - -@benchgroup "centrality" begin - @benchgroup "graphs" begin - for (name, g) in GRAPHS - @bench "$(name): degree" Graphs.degree_centrality($g) - @bench "$(name): closeness" Graphs.closeness_centrality($g) - if nv(g) < 1000 - @bench "$(name): betweenness" Graphs.betweenness_centrality($g) - @bench "$(name): katz" Graphs.katz_centrality($g) - end - end - end # graphs - @benchgroup "digraphs" begin - for (name, g) in DIGRAPHS - @bench "$(name): degree" Graphs.degree_centrality($g) - @bench "$(name): closeness" Graphs.closeness_centrality($g) - if nv(g) < 1000 - @bench "$(name): betweenness" Graphs.betweenness_centrality($g) - @bench "$(name): katz" Graphs.katz_centrality($g) - end - if nv(g) < 500 - @bench "$(name): pagerank" Graphs.pagerank($g) - end - end - end # digraphs -end # centrality diff --git a/benchmark/connectivity.jl b/benchmark/connectivity.jl deleted file mode 100644 index 4ba340919..000000000 --- a/benchmark/connectivity.jl +++ /dev/null @@ -1,14 +0,0 @@ -@benchgroup "connectivity" begin - @benchgroup "digraphs" begin - for (name, g) in DIGRAPHS - @bench "$(name): strongly_connected_components" Graphs.strongly_connected_components( - $g - ) - end - end # digraphs - @benchgroup "graphs" begin - for (name, g) in GRAPHS - @bench "$(name): connected_components" Graphs.connected_components($g) - end - end # graphs -end # connectivity diff --git a/benchmark/core.jl b/benchmark/core.jl deleted file mode 100644 index 75f0bef48..000000000 --- a/benchmark/core.jl +++ /dev/null @@ -1,37 +0,0 @@ -suite["core"] = BenchmarkGroup(["nv", "edges", "has_edge"]) - -# nv -suite["core"]["nv"] = BenchmarkGroup(["graphs", "digraphs"]) -suite["core"]["nv"]["graphs"] = @benchmarkable [nv(g) for (n, g) in $GRAPHS] -suite["core"]["nv"]["digraphs"] = @benchmarkable [nv(g) for (n, g) in $DIGRAPHS] - -# iterate edges -function iter_edges(g::AbstractGraph) - i = 0 - for e in edges(g) - i += 1 - end - return i -end - -suite["core"]["edges"] = BenchmarkGroup(["graphs", "digraphs"]) -suite["core"]["edges"]["graphs"] = @benchmarkable [iter_edges(g) for (n, g) in $GRAPHS] -suite["core"]["edges"]["digraphs"] = @benchmarkable [iter_edges(g) for (n, g) in $DIGRAPHS] - -# has edge -function all_has_edge(g::AbstractGraph) - nvg = nv(g) - srcs = rand([1:nvg;], cld(nvg, 4)) - dsts = rand([1:nvg;], cld(nvg, 4)) - i = 0 - for (s, d) in zip(srcs, dsts) - if has_edge(g, s, d) - i += 1 - end - end - return i -end - -suite["core"]["has_edge"] = BenchmarkGroup(["graphs", "digraphs"]) -suite["core"]["has_edge"]["graphs"] = @benchmarkable [all_has_edge(g) for (n, g) in $GRAPHS] -suite["core"]["has_edge"]["digraphs"] = @benchmarkable [all_has_edge(g) for (n, g) in $DIGRAPHS] diff --git a/benchmark/insertions.jl b/benchmark/insertions.jl deleted file mode 100644 index 3fdc292a9..000000000 --- a/benchmark/insertions.jl +++ /dev/null @@ -1,4 +0,0 @@ -@benchgroup "insertions" begin - n = 10000 - @bench "ER Generation" g = SimpleGraph($n, 16 * $n) -end diff --git a/benchmark/parallel/egonets.jl b/benchmark/parallel/egonets.jl index 22d239019..d160bb4c3 100644 --- a/benchmark/parallel/egonets.jl +++ b/benchmark/parallel/egonets.jl @@ -1,62 +1,57 @@ using Graphs using BenchmarkTools -@show Threads.nthreads() - -@benchgroup "parallel" begin - @benchgroup "egonet" begin - function vertex_function(g::Graph, i::Int) - a = 0 - for u in neighbors(g, i) - a += degree(g, u) - end - return a - end - - function twohop(g::Graph, i::Int) - a = 0 - for u in neighbors(g, i) - for v in neighbors(g, u) - a += degree(g, v) - end - end - return a - end - function mapvertices(f, g::Graph) - n = nv(g) - a = zeros(Int, n) - Threads.@threads for i in 1:n - a[i] = f(g, i) - end - return a - end +SUITE["parallel"] = BenchmarkGroup([], + "egonet" => BenchmarkGroup([]) + ) - function mapvertices_single(f, g) - n = nv(g) - a = zeros(Int, n) - for i in 1:n - a[i] = f(g, i) - end - return a - end +SUITE["serial"] = BenchmarkGroup([], + "egonet" => BenchmarkGroup([]) + ) - function comparison(f, g) - println("Mulithreaded on $(Threads.nthreads())") - b1 = @benchmarkable mapvertices($f, $g) - println(b1) +function vertex_function(g::Graph, i::Int) + a = 0 + for u in neighbors(g, i) + a += degree(g, u) + end + return a +end - println("singlethreaded") - b2 = @benchmarkable mapvertices_single($f, $g) - println(b2) - return println("done") +function twohop(g::Graph, i::Int) + a = 0 + for u in neighbors(g, i) + for v in neighbors(g, u) + a += degree(g, v) end + end + return a +end - nv_ = 10000 - g = SimpleGraph(nv_, 64 * nv_) - f = vertex_function - println(g) +function mapvertices(f, g::Graph) + n = nv(g) + a = zeros(Int, n) + Threads.@threads for i in 1:n + a[i] = f(g, i) + end + return a +end - comparison(vertex_function, g) - comparison(twohop, g) +function mapvertices_single(f, g) + n = nv(g) + a = zeros(Int, n) + for i in 1:n + a[i] = f(g, i) end + return a +end + +let + nv_ = 10000 + g = SimpleGraph(nv_, 64 * nv_) + + SUITE["parallel"]["egonet"]["vertexfunction"] = @benchmarkable mapvertices($vertex_function, $g) + SUITE["parallel"]["egonet"]["twohop"] = @benchmarkable mapvertices($twohop, $g) + + SUITE["serial"]["egonet"]["vertexfunction"] = @benchmarkable mapvertices_single($vertex_function, $g) + SUITE["serial"]["egonet"]["twohop"] = @benchmarkable mapvertices_single($twohop, $g) end diff --git a/benchmark/serial/centrality.jl b/benchmark/serial/centrality.jl new file mode 100644 index 000000000..f0bb38de1 --- /dev/null +++ b/benchmark/serial/centrality.jl @@ -0,0 +1,20 @@ +SUITE["centrality"] = BenchmarkGroup([], + "graphs" => BenchmarkGroup([]), + "digraphs" => BenchmarkGroup([]), + ) + +# graphs +SUITE["centrality"]["graphs"]["degree_centrality"] = @benchmarkable [Graphs.degree_centrality(g) for (_, g) in $GRAPHS] +SUITE["centrality"]["graphs"]["closeness_centrality"] = @benchmarkable [Graphs.closeness_centrality(g) for (_, g) in $GRAPHS] +# if nv(g) < 1000 is needed ? +SUITE["centrality"]["graphs"]["betweenness_centrality"] = @benchmarkable [Graphs.betweenness_centrality(g) for (_, g) in $GRAPHS] +SUITE["centrality"]["graphs"]["katz_centrality"] = @benchmarkable [Graphs.katz_centrality(g) for (_, g) in $GRAPHS] + +#digraphs +SUITE["centrality"]["digraphs"]["degree_centrality"] = @benchmarkable [Graphs.degree_centrality(g) for (_, g) in $DIGRAPHS] +SUITE["centrality"]["digraphs"]["closeness_centrality"] = @benchmarkable [Graphs.closeness_centrality(g) for (_, g) in $DIGRAPHS] +# if nv(g) < 1000 is needed ? +SUITE["centrality"]["digraphs"]["betweenness_centrality"] = @benchmarkable [Graphs.betweenness_centrality(g) for (_, g) in $DIGRAPHS] +SUITE["centrality"]["digraphs"]["katz_centrality"] = @benchmarkable [Graphs.katz_centrality(g) for (_, g) in $DIGRAPHS] +# if nv(g) < 500 is needed ? +SUITE["centrality"]["digraphs"]["pagerank"] = @benchmarkable [Graphs.pagerank(g) for (_, g) in $DIGRAPHS] diff --git a/benchmark/serial/connectivity.jl b/benchmark/serial/connectivity.jl new file mode 100644 index 000000000..3f9c9e9f5 --- /dev/null +++ b/benchmark/serial/connectivity.jl @@ -0,0 +1,8 @@ +SUITE["connectivity"] = BenchmarkGroup([], + "graphs" => BenchmarkGroup([]), + "digraphs" => BenchmarkGroup([]), + ) + +SUITE["connectivity"]["digraphs"]["strongly_connected_components"] = @benchmarkable [Graphs.strongly_connected_components(g) for (_, g) in $DIGRAPHS] + +SUITE["connectivity"]["graphs"]["connected_components"] = @benchmarkable [Graphs.connected_components(g) for (_, g) in $GRAPHS] diff --git a/benchmark/serial/core.jl b/benchmark/serial/core.jl new file mode 100644 index 000000000..ee246808d --- /dev/null +++ b/benchmark/serial/core.jl @@ -0,0 +1,38 @@ +SUITE["core"] = BenchmarkGroup([], + "nv" => BenchmarkGroup([]), + "edges" => BenchmarkGroup([]), + "has_edge" => BenchmarkGroup([]), + ) + +# nv +SUITE["core"]["nv"]["graphs"] = @benchmarkable [nv(g) for (_, g) in $GRAPHS] +SUITE["core"]["nv"]["digraphs"] = @benchmarkable [nv(g) for (_, g) in $DIGRAPHS] + +# iterate edges +function iter_edges(g::AbstractGraph) + i = 0 + for e in edges(g) + i += 1 + end + return i +end + +SUITE["core"]["edges"]["graphs"] = @benchmarkable [iter_edges(g) for (_, g) in $GRAPHS] +SUITE["core"]["edges"]["digraphs"] = @benchmarkable [iter_edges(g) for (_, g) in $DIGRAPHS] + +# has edge +function all_has_edge(g::AbstractGraph) + nvg = nv(g) + srcs = rand([1:nvg;], cld(nvg, 4)) + dsts = rand([1:nvg;], cld(nvg, 4)) + i = 0 + for (s, d) in zip(srcs, dsts) + if has_edge(g, s, d) + i += 1 + end + end + return i +end + +SUITE["core"]["has_edge"]["graphs"] = @benchmarkable [all_has_edge(g) for (_, g) in $GRAPHS] +SUITE["core"]["has_edge"]["digraphs"] = @benchmarkable [all_has_edge(g) for (_, g) in $DIGRAPHS] diff --git a/benchmark/edges.jl b/benchmark/serial/edges.jl similarity index 56% rename from benchmark/edges.jl rename to benchmark/serial/edges.jl index c35329d4d..b7ec68c7a 100644 --- a/benchmark/edges.jl +++ b/benchmark/serial/edges.jl @@ -5,7 +5,7 @@ const P = Pair{Int,Int} convert(::Type{Tuple}, e::Pair) = (e.first, e.second) function fille(n) - t = Array{Graphs.Edge,1}(n) + t = Vector{Graphs.Edge}(undef, n) for i in 1:n t[i] = Graphs.Edge(i, i + 1) end @@ -13,7 +13,7 @@ function fille(n) end function fillp(n) - t = Array{P,1}(n) + t = Vector{P}(undef, n) for i in 1:n t[i] = P(i, i + 1) end @@ -30,11 +30,15 @@ function tsum(t) return x end -n = 10000 -@benchgroup "edges" begin - @bench "$(n): fille" fille($n) - @bench "$(n): fillp" fillp($n) +let + n = 10_000 + + SUITE["edges"] = BenchmarkGroup([]) + SUITE["edges"]["fille"] = @benchmarkable fille($n) + SUITE["edges"]["fillp"] = @benchmarkable fille($n) + a, b = fille(n), fillp(n) - @bench "$(n): tsume" tsum($a) - @bench "$(n): tsump" tsum($b) -end # edges + + SUITE["edges"]["tsume"] = @benchmarkable tsum($a) + SUITE["edges"]["tsump"] = @benchmarkable tsum($b) +end diff --git a/benchmark/serial/insertions.jl b/benchmark/serial/insertions.jl new file mode 100644 index 000000000..c7a65db94 --- /dev/null +++ b/benchmark/serial/insertions.jl @@ -0,0 +1,6 @@ +SUITE["insertions"] = BenchmarkGroup([]) + +let + n = 10_000 + SUITE["insertions"]["SG(n,e) Generation"] = @benchmarkable SimpleGraph($n, 16 * $n) +end diff --git a/benchmark/serial/traversals.jl b/benchmark/serial/traversals.jl new file mode 100644 index 000000000..7a14d66d5 --- /dev/null +++ b/benchmark/serial/traversals.jl @@ -0,0 +1,11 @@ +SUITE["traversals"] = BenchmarkGroup([], + "graphs" => BenchmarkGroup([]), + "digraphs" => BenchmarkGroup([]), + ) + +SUITE["traversals"]["graphs"]["bfs_tree"] = @benchmarkable [Graphs.bfs_tree(g, 1) for (_, g) in $GRAPHS] +SUITE["traversals"]["graphs"]["dfs_tree"] = @benchmarkable [Graphs.dfs_tree(g, 1) for (_, g) in $GRAPHS] + +SUITE["traversals"]["digraphs"]["bfs_tree"] = @benchmarkable [Graphs.bfs_tree(g, 1) for (_, g) in $DIGRAPHS] +SUITE["traversals"]["digraphs"]["dfs_tree"] = @benchmarkable [Graphs.dfs_tree(g, 1) for (_, g) in $DIGRAPHS] + diff --git a/benchmark/traversals.jl b/benchmark/traversals.jl deleted file mode 100644 index 97b511173..000000000 --- a/benchmark/traversals.jl +++ /dev/null @@ -1,14 +0,0 @@ -@benchgroup "traversals" begin - @benchgroup "graphs" begin - for (name, g) in GRAPHS - @bench "$(name): bfs_tree" Graphs.bfs_tree($g, 1) - @bench "$(name): dfs_tree" Graphs.dfs_tree($g, 1) - end - end # graphs - @benchgroup "digraphs" begin - for (name, g) in DIGRAPHS - @bench "$(name): bfs_tree" Graphs.bfs_tree($g, 1) - @bench "$(name): dfs_tree" Graphs.dfs_tree($g, 1) - end - end # digraphs -end # traversals diff --git a/benchmark/tune.json b/benchmark/tune.json new file mode 100644 index 000000000..14c07c593 --- /dev/null +++ b/benchmark/tune.json @@ -0,0 +1,558 @@ +[ + { + "Julia": "1.9.4", + "BenchmarkTools": "1.0.0" + }, + [ + [ + "BenchmarkGroup", + { + "data": { + "centrality": [ + "BenchmarkGroup", + { + "data": { + "graphs": [ + "BenchmarkGroup", + { + "data": { + "closeness_centrality": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "betweenness_centrality": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "katz_centrality": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "degree_centrality": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 15, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ] + }, + "tags": [] + } + ], + "digraphs": [ + "BenchmarkGroup", + { + "data": { + "closeness_centrality": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "betweenness_centrality": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "katz_centrality": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "degree_centrality": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 10, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "pagerank": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ] + }, + "tags": [] + } + ] + }, + "tags": [] + } + ], + "parallel": [ + "BenchmarkGroup", + { + "data": { + "egonet": [ + "BenchmarkGroup", + { + "data": { + "vertexfunction": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "twohop": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ] + }, + "tags": [] + } + ] + }, + "tags": [] + } + ], + "core": [ + "BenchmarkGroup", + { + "data": { + "nv": [ + "BenchmarkGroup", + { + "data": { + "graphs": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 723, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "digraphs": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 784, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ] + }, + "tags": [] + } + ], + "edges": [ + "BenchmarkGroup", + { + "data": { + "graphs": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 7, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "digraphs": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 8, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ] + }, + "tags": [] + } + ], + "has_edge": [ + "BenchmarkGroup", + { + "data": { + "graphs": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 7, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "digraphs": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 8, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ] + }, + "tags": [] + } + ] + }, + "tags": [] + } + ], + "connectivity": [ + "BenchmarkGroup", + { + "data": { + "graphs": [ + "BenchmarkGroup", + { + "data": { + "connected_components": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ] + }, + "tags": [] + } + ], + "digraphs": [ + "BenchmarkGroup", + { + "data": { + "strongly_connected_components": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ] + }, + "tags": [] + } + ] + }, + "tags": [] + } + ], + "insertions": [ + "BenchmarkGroup", + { + "data": { + "SG(n,e) Generation": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ] + }, + "tags": [] + } + ], + "traversals": [ + "BenchmarkGroup", + { + "data": { + "graphs": [ + "BenchmarkGroup", + { + "data": { + "bfs_tree": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "dfs_tree": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ] + }, + "tags": [] + } + ], + "digraphs": [ + "BenchmarkGroup", + { + "data": { + "bfs_tree": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "dfs_tree": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ] + }, + "tags": [] + } + ] + }, + "tags": [] + } + ], + "serial": [ + "BenchmarkGroup", + { + "data": { + "egonet": [ + "BenchmarkGroup", + { + "data": { + "vertexfunction": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "twohop": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ] + }, + "tags": [] + } + ] + }, + "tags": [] + } + ], + "edges": [ + "BenchmarkGroup", + { + "data": { + "fillp": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "fille": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "tsume": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ], + "tsump": [ + "Parameters", + { + "gctrial": true, + "time_tolerance": 0.05, + "samples": 10000, + "evals": 1, + "gcsample": false, + "seconds": 5.0, + "overhead": 0.0, + "memory_tolerance": 0.01 + } + ] + }, + "tags": [] + } + ] + }, + "tags": [] + } + ] + ] +] diff --git a/test/runtests.jl b/test/runtests.jl index 28525046e..289c5136c 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -162,3 +162,5 @@ tests = [ include(tp) end end; + +nothing;