Skip to content

Instantly share code, notes, and snippets.

@jjerphan
Last active August 13, 2021 15:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jjerphan/6c1f3e4c80908b862ccce6682835d36a to your computer and use it in GitHub Desktop.
Save jjerphan/6c1f3e4c80908b862ccce6682835d36a to your computer and use it in GitHub Desktop.
scikit-learn Binary Tree benchmark script -- used in scikit-learn/scikit-learn#19473
import numpy as np
from sklearn.neighbors import KDTree, BallTree
from .common import Benchmark
class BinaryTreeBenchmark(Benchmark):
"""
Base class for BinaryTree benchmarks.
"""
param_names = ['BinaryTree', 'n', 'matrix_type', 'leaf_size']
params = [
[KDTree, BallTree],
[1000, 10000],
['random', 'ordered', 'reverse_ordered', 'duplicated'],
[1 , 20, 40, 100],
]
test_cases = {
"random": lambda n: np.random.rand(n),
"ordered": lambda n: np.arange(n, dtype=float),
"reverse_ordered": lambda n: np.arange(n, 0, -1, dtype=float),
"duplicated": lambda n: np.zeros([n], dtype=float)
}
class BinaryTreeCreation(BinaryTreeBenchmark):
"""
Benchmarks for BinaryTree creation.
"""
def setup(self, BinaryTree, n, matrix_type, leaf_size):
self.data = np.expand_dims(self.test_cases[matrix_type](n), -1)
self.leaf_size = leaf_size
self.BinaryTree = BinaryTree
def time_creation(self, BinaryTree, n, matrix_type, leaf_size):
self.BinaryTree(self.data, leaf_size=self.leaf_size)
class BinaryTreeQuery(BinaryTreeBenchmark):
"""
Benchmarks for BinaryTree queries.
"""
param_names = BinaryTreeBenchmark.param_names + ['breadth_first']
params = BinaryTreeBenchmark.params + [[True, False]]
def setup(self, BinaryTree, n, matrix_type, leaf_size, breadth_first):
self.data = np.expand_dims(self.test_cases[matrix_type](n), -1)
self.tree = BinaryTree(self.data, leaf_size=leaf_size)
self.query_points = np.expand_dims(np.random.rand(10000), -1)
def time_query(self, BinaryTree, n, matrix_type, leaf_size, breadth_first):
self.tree.query(
self.query_points,
dualtree=False,
breadth_first=breadth_first,
sort_results=False)
@jjerphan
Copy link
Author

jjerphan commented Apr 7, 2021

Raw output from the second revision:

$ asv run -b BinaryTree
· Creating environments
· Discovering benchmarks
· Running 4 total benchmarks (2 commits * 1 environments * 2 benchmarks)
[  0.00%] · For scikit-learn commit 9cfacf15 <main>:
[  0.00%] ·· Benchmarking conda-py3.9-cython-joblib-numpy-scipy-threadpoolctl
[ 25.00%] ··· binary_tree.BinaryTreeCreation.time_creation                                                                           ok
[ 25.00%] ··· ======================================= ======= ================= ============= ============= ============= =============
              --                                                                                       leaf_size
              ----------------------------------------------------------------- -------------------------------------------------------
                             BinaryTree                  n       matrix_type          1             20            40           100
              ======================================= ======= ================= ============= ============= ============= =============
                 sklearn.neighbors._kd_tree.KDTree       10         random         84.3±2μs      88.0±5μs      80.1±2μs      80.9±2μs
                 sklearn.neighbors._kd_tree.KDTree       10        ordered         79.4±3μs      78.2±2μs      79.2±2μs      81.2±4μs
                 sklearn.neighbors._kd_tree.KDTree       10    reverse_ordered     82.1±4μs      81.3±3μs      79.5±2μs      84.8±2μs
                 sklearn.neighbors._kd_tree.KDTree       10       duplicated       81.5±2μs      84.9±2μs      84.7±2μs      84.5±2μs
                 sklearn.neighbors._kd_tree.KDTree      100         random         105±2μs       86.6±2μs      83.8±2μs      81.4±2μs
                 sklearn.neighbors._kd_tree.KDTree      100        ordered         116±2μs       104±3μs       97.6±3μs      81.4±1μs
                 sklearn.neighbors._kd_tree.KDTree      100    reverse_ordered     127±4μs       108±3μs       98.5±2μs      85.5±2μs
                 sklearn.neighbors._kd_tree.KDTree      100       duplicated       108±2μs       96.5±3μs      98.9±4μs      81.5±2μs
                 sklearn.neighbors._kd_tree.KDTree      1000        random         505±20μs      395±20μs      296±20μs      266±20μs
                 sklearn.neighbors._kd_tree.KDTree      1000       ordered       2.00±0.08ms   1.73±0.08ms   1.82±0.08ms    1.75±0.1ms
                 sklearn.neighbors._kd_tree.KDTree      1000   reverse_ordered    2.20±0.2ms   1.96±0.07ms    2.10±0.2ms   1.66±0.08ms
                 sklearn.neighbors._kd_tree.KDTree      1000      duplicated     1.64±0.08ms    1.45±0.1ms   1.18±0.03ms   1.08±0.02ms
                 sklearn.neighbors._kd_tree.KDTree     10000        random        8.07±0.3ms    5.96±0.3ms    5.71±0.3ms    5.53±0.6ms
                 sklearn.neighbors._kd_tree.KDTree     10000       ordered         153±1ms       159±1ms       156±4ms       164±8ms
                 sklearn.neighbors._kd_tree.KDTree     10000   reverse_ordered     185±8ms       168±5ms       173±6ms       175±8ms
                 sklearn.neighbors._kd_tree.KDTree     10000      duplicated       127±7ms       128±5ms       117±5ms       119±8ms
               sklearn.neighbors._ball_tree.BallTree     10         random         80.1±2μs      82.7±4μs      78.7±2μs      79.4±2μs
               sklearn.neighbors._ball_tree.BallTree     10        ordered         81.4±3μs      80.4±2μs      82.5±5μs      84.2±2μs
               sklearn.neighbors._ball_tree.BallTree     10    reverse_ordered     85.3±3μs      83.8±2μs      83.6±2μs      83.7±2μs
               sklearn.neighbors._ball_tree.BallTree     10       duplicated       85.5±3μs      83.0±2μs      79.1±2μs      80.2±3μs
               sklearn.neighbors._ball_tree.BallTree    100         random         99.8±3μs      91.0±3μs      87.8±2μs      83.8±2μs
               sklearn.neighbors._ball_tree.BallTree    100        ordered         116±3μs       96.4±2μs      95.3±2μs      81.0±3μs
               sklearn.neighbors._ball_tree.BallTree    100    reverse_ordered     112±2μs       97.5±2μs      91.9±2μs      80.9±2μs
               sklearn.neighbors._ball_tree.BallTree    100       duplicated       112±3μs       99.7±2μs      94.8±3μs      89.7±3μs
               sklearn.neighbors._ball_tree.BallTree    1000        random         545±50μs      330±20μs      285±20μs      226±10μs
               sklearn.neighbors._ball_tree.BallTree    1000       ordered       1.78±0.04ms   1.76±0.04ms   1.68±0.04ms   1.60±0.08ms
               sklearn.neighbors._ball_tree.BallTree    1000   reverse_ordered   1.99±0.04ms   1.85±0.04ms    1.87±0.1ms   1.81±0.08ms
               sklearn.neighbors._ball_tree.BallTree    1000      duplicated     1.43±0.05ms   1.29±0.03ms   1.23±0.03ms   1.09±0.03ms
               sklearn.neighbors._ball_tree.BallTree   10000        random        7.92±0.4ms    6.28±0.5ms    5.95±0.3ms    5.45±0.4ms
               sklearn.neighbors._ball_tree.BallTree   10000       ordered         164±3ms       160±4ms       150±2ms       160±7ms
               sklearn.neighbors._ball_tree.BallTree   10000   reverse_ordered     176±8ms       163±5ms       171±7ms       162±3ms
               sklearn.neighbors._ball_tree.BallTree   10000      duplicated       116±6ms       120±5ms       115±4ms       112±3ms
              ======================================= ======= ================= ============= ============= ============= =============

[ 50.00%] ··· binary_tree.BinaryTreeQuery.time_query                                                                                 ok
[ 50.00%] ··· ======================================= ======= ================= ============= ============ ============= ============
              --                                                                                      leaf_size
              ----------------------------------------------------------------- -----------------------------------------------------
                             BinaryTree                  n       matrix_type          1            20            40          100
              ======================================= ======= ================= ============= ============ ============= ============
                 sklearn.neighbors._kd_tree.KDTree       10         random         98.6±3μs     71.9±2μs      71.4±1μs     72.0±2μs
                 sklearn.neighbors._kd_tree.KDTree       10        ordered         96.7±6μs     73.2±2μs      73.9±2μs     68.9±1μs
                 sklearn.neighbors._kd_tree.KDTree       10    reverse_ordered     98.7±3μs     81.3±3μs      76.2±2μs     80.3±2μs
                 sklearn.neighbors._kd_tree.KDTree       10       duplicated       141±4μs      75.7±4μs      75.1±2μs     70.6±2μs
                 sklearn.neighbors._kd_tree.KDTree      100         random         113±2μs      98.6±2μs      118±5μs      137±8μs
                 sklearn.neighbors._kd_tree.KDTree      100        ordered         119±3μs      90.7±2μs      106±4μs      143±10μs
                 sklearn.neighbors._kd_tree.KDTree      100    reverse_ordered     129±3μs      104±3μs       106±3μs      184±6μs
                 sklearn.neighbors._kd_tree.KDTree      100       duplicated       711±20μs     154±3μs       132±4μs      116±5μs
                 sklearn.neighbors._kd_tree.KDTree      1000        random         153±6μs      157±7μs       186±10μs     183±8μs
                 sklearn.neighbors._kd_tree.KDTree      1000       ordered         158±8μs      123±5μs       141±7μs      166±9μs
                 sklearn.neighbors._kd_tree.KDTree      1000   reverse_ordered     150±5μs      131±3μs       136±4μs      171±6μs
                 sklearn.neighbors._kd_tree.KDTree      1000      duplicated     5.16±0.09ms    918±20μs      751±10μs     655±30μs
                 sklearn.neighbors._kd_tree.KDTree     10000        random         192±7μs      188±10μs      222±10μs     260±20μs
                 sklearn.neighbors._kd_tree.KDTree     10000       ordered         172±6μs      149±5μs       161±4μs      200±6μs
                 sklearn.neighbors._kd_tree.KDTree     10000   reverse_ordered     204±7μs      173±5μs       186±6μs      214±6μs
                 sklearn.neighbors._kd_tree.KDTree     10000      duplicated      79.4±0.9ms   7.07±0.2ms   5.90±0.09ms   5.55±0.1ms
               sklearn.neighbors._ball_tree.BallTree     10         random         86.4±5μs     80.9±3μs      74.7±3μs     82.8±5μs
               sklearn.neighbors._ball_tree.BallTree     10        ordered         74.5±2μs     71.3±5μs      68.4±1μs     69.9±5μs
               sklearn.neighbors._ball_tree.BallTree     10    reverse_ordered     76.1±3μs     74.2±2μs      73.1±2μs     74.2±3μs
               sklearn.neighbors._ball_tree.BallTree     10       duplicated       96.4±4μs     68.6±1μs      67.2±1μs     67.9±2μs
               sklearn.neighbors._ball_tree.BallTree    100         random         95.3±2μs     105±8μs       104±3μs      122±2μs
               sklearn.neighbors._ball_tree.BallTree    100        ordered         92.4±2μs     91.0±2μs      97.8±3μs     120±3μs
               sklearn.neighbors._ball_tree.BallTree    100    reverse_ordered     90.8±5μs     82.1±2μs      95.4±2μs     177±5μs
               sklearn.neighbors._ball_tree.BallTree    100       duplicated       367±20μs     127±2μs       118±2μs      114±3μs
               sklearn.neighbors._ball_tree.BallTree    1000        random         113±3μs      120±3μs       146±4μs      180±6μs
               sklearn.neighbors._ball_tree.BallTree    1000       ordered         107±3μs      106±3μs       116±2μs      144±4μs
               sklearn.neighbors._ball_tree.BallTree    1000   reverse_ordered     101±3μs      104±3μs       109±3μs      136±3μs
               sklearn.neighbors._ball_tree.BallTree    1000      duplicated     2.47±0.09ms    726±20μs      654±20μs     606±20μs
               sklearn.neighbors._ball_tree.BallTree   10000        random         150±10μs     155±5μs       182±6μs      239±7μs
               sklearn.neighbors._ball_tree.BallTree   10000       ordered         167±60μs     170±70μs      140±3μs      202±30μs
               sklearn.neighbors._ball_tree.BallTree   10000   reverse_ordered     126±6μs      133±10μs      138±3μs      218±50μs
               sklearn.neighbors._ball_tree.BallTree   10000      duplicated       37.6±2ms    6.36±0.2ms    5.45±0.2ms   5.35±0.1ms
              ======================================= ======= ================= ============= ============ ============= ============

[ 50.00%] · For scikit-learn commit 809aa8be <cpp-nth-element>:
[ 50.00%] ·· Building for conda-py3.9-cython-joblib-numpy-scipy-threadpoolctl..
[ 50.00%] ·· Benchmarking conda-py3.9-cython-joblib-numpy-scipy-threadpoolctl
[ 75.00%] ··· binary_tree.BinaryTreeCreation.time_creation                                                                           ok
[ 75.00%] ··· ======================================= ======= ================= ============ ============= ============= =============
              --                                                                                      leaf_size
              ----------------------------------------------------------------- ------------------------------------------------------
                             BinaryTree                  n       matrix_type         1             20            40           100
              ======================================= ======= ================= ============ ============= ============= =============
                 sklearn.neighbors._kd_tree.KDTree       10         random        98.0±7μs      91.9±5μs      91.5±4μs      92.9±4μs
                 sklearn.neighbors._kd_tree.KDTree       10        ordered        100±10μs      136±20μs      160±30μs      158±30μs
                 sklearn.neighbors._kd_tree.KDTree       10    reverse_ordered    161±20μs      98.3±8μs      106±10μs      98.2±5μs
                 sklearn.neighbors._kd_tree.KDTree       10       duplicated      103±10μs      96.7±7μs      104±10μs      94.5±7μs
                 sklearn.neighbors._kd_tree.KDTree      100         random        121±8μs       104±8μs       104±7μs       102±8μs
                 sklearn.neighbors._kd_tree.KDTree      100        ordered        118±10μs      104±10μs      103±8μs       102±8μs
                 sklearn.neighbors._kd_tree.KDTree      100    reverse_ordered    139±10μs      103±6μs       101±6μs       104±10μs
                 sklearn.neighbors._kd_tree.KDTree      100       duplicated      127±10μs      185±20μs      106±10μs      185±20μs
                 sklearn.neighbors._kd_tree.KDTree      1000        random        893±90μs      305±30μs      257±20μs      226±20μs
                 sklearn.neighbors._kd_tree.KDTree      1000       ordered        473±70μs      225±20μs      193±20μs      185±20μs
                 sklearn.neighbors._kd_tree.KDTree      1000   reverse_ordered    441±30μs      230±20μs      181±10μs      172±10μs
                 sklearn.neighbors._kd_tree.KDTree      1000      duplicated      342±20μs      188±10μs      193±20μs      173±20μs
                 sklearn.neighbors._kd_tree.KDTree     10000        random       5.26±0.2ms    2.32±0.1ms    2.16±0.1ms   1.94±0.08ms
                 sklearn.neighbors._kd_tree.KDTree     10000       ordered       4.01±0.2ms    1.80±0.1ms   1.52±0.08ms    1.36±0.1ms
                 sklearn.neighbors._kd_tree.KDTree     10000   reverse_ordered   4.25±0.3ms    1.85±0.1ms   1.56±0.08ms    1.48±0.2ms
                 sklearn.neighbors._kd_tree.KDTree     10000      duplicated     3.11±0.3ms   1.48±0.08ms   1.29±0.07ms   1.28±0.08ms
               sklearn.neighbors._ball_tree.BallTree     10         random        90.3±5μs      103±30μs      96.4±9μs      119±30μs
               sklearn.neighbors._ball_tree.BallTree     10        ordered        181±50μs     95.7±10μs      87.7±7μs     87.0±10μs
               sklearn.neighbors._ball_tree.BallTree     10    reverse_ordered   95.7±10μs      89.4±6μs      85.1±3μs      95.6±9μs
               sklearn.neighbors._ball_tree.BallTree     10       duplicated      86.0±4μs      89.7±2μs      82.3±2μs      82.2±2μs
               sklearn.neighbors._ball_tree.BallTree    100         random        112±2μs       95.6±3μs      92.0±3μs      82.5±2μs
               sklearn.neighbors._ball_tree.BallTree    100        ordered        110±4μs       92.6±3μs      92.9±4μs     92.8±20μs
               sklearn.neighbors._ball_tree.BallTree    100    reverse_ordered    110±4μs       94.2±2μs      86.2±2μs      82.1±1μs
               sklearn.neighbors._ball_tree.BallTree    100       duplicated      99.0±3μs      86.6±2μs     86.7±10μs      89.4±3μs
               sklearn.neighbors._ball_tree.BallTree    1000        random        422±10μs      260±7μs       211±5μs       199±6μs
               sklearn.neighbors._ball_tree.BallTree    1000       ordered        333±20μs      190±5μs       167±3μs       181±40μs
               sklearn.neighbors._ball_tree.BallTree    1000   reverse_ordered   510±100μs      228±10μs      190±10μs      157±10μs
               sklearn.neighbors._ball_tree.BallTree    1000      duplicated      326±60μs      193±8μs       215±20μs      153±10μs
               sklearn.neighbors._ball_tree.BallTree   10000        random       4.19±0.1ms   2.28±0.06ms   1.98±0.05ms   1.74±0.06ms
               sklearn.neighbors._ball_tree.BallTree   10000       ordered       3.37±0.1ms   1.74±0.05ms   1.53±0.05ms    1.44±0.2ms
               sklearn.neighbors._ball_tree.BallTree   10000   reverse_ordered   3.50±0.6ms   1.66±0.05ms    1.53±0.1ms   1.29±0.06ms
               sklearn.neighbors._ball_tree.BallTree   10000      duplicated     2.87±0.1ms   1.56±0.07ms   1.47±0.06ms   1.28±0.05ms
              ======================================= ======= ================= ============ ============= ============= =============

[100.00%] ··· binary_tree.BinaryTreeQuery.time_query                                                                                 ok
[100.00%] ··· ======================================= ======= ================= ============ ============ ============ ============
              --                                                                                     leaf_size
              ----------------------------------------------------------------- ---------------------------------------------------
                             BinaryTree                  n       matrix_type         1            20           40          100
              ======================================= ======= ================= ============ ============ ============ ============
                 sklearn.neighbors._kd_tree.KDTree       10         random        106±5μs      84.2±5μs     82.7±5μs     97.0±8μs
                 sklearn.neighbors._kd_tree.KDTree       10        ordered        93.0±3μs     81.8±3μs     78.1±2μs     77.6±4μs
                 sklearn.neighbors._kd_tree.KDTree       10    reverse_ordered    105±3μs      80.8±3μs     82.3±4μs     84.2±7μs
                 sklearn.neighbors._kd_tree.KDTree       10       duplicated      151±10μs     75.5±2μs     83.6±5μs     84.0±4μs
                 sklearn.neighbors._kd_tree.KDTree      100         random        117±2μs      111±4μs      119±4μs      135±6μs
                 sklearn.neighbors._kd_tree.KDTree      100        ordered        124±6μs      100±4μs      107±5μs      125±8μs
                 sklearn.neighbors._kd_tree.KDTree      100    reverse_ordered    126±7μs      114±6μs      115±20μs     198±9μs
                 sklearn.neighbors._kd_tree.KDTree      100       duplicated     793±100μs     158±6μs      129±6μs      115±3μs
                 sklearn.neighbors._kd_tree.KDTree      1000        random        148±7μs      148±10μs     180±10μs     187±10μs
                 sklearn.neighbors._kd_tree.KDTree      1000       ordered        135±4μs      131±5μs      137±4μs      160±7μs
                 sklearn.neighbors._kd_tree.KDTree      1000   reverse_ordered    155±7μs      132±3μs      136±4μs      160±6μs
                 sklearn.neighbors._kd_tree.KDTree      1000      duplicated     5.25±0.2ms   1.28±0.2ms   1.21±0.2ms   865±100μs
                 sklearn.neighbors._kd_tree.KDTree     10000        random        232±20μs     211±30μs     260±60μs     312±50μs
                 sklearn.neighbors._kd_tree.KDTree     10000       ordered        210±10μs     174±10μs     197±30μs     240±20μs
                 sklearn.neighbors._kd_tree.KDTree     10000   reverse_ordered    289±50μs     232±30μs     223±20μs     235±20μs
                 sklearn.neighbors._kd_tree.KDTree     10000      duplicated      101±6ms     8.17±0.5ms   6.92±0.6ms   5.94±0.3ms
               sklearn.neighbors._ball_tree.BallTree     10         random        116±30μs    98.8±10μs     86.6±5μs     85.8±4μs
               sklearn.neighbors._ball_tree.BallTree     10        ordered        95.7±7μs     125±30μs    92.4±10μs     86.4±4μs
               sklearn.neighbors._ball_tree.BallTree     10    reverse_ordered    96.7±8μs     91.4±6μs     94.3±6μs     94.8±7μs
               sklearn.neighbors._ball_tree.BallTree     10       duplicated      125±8μs      82.0±5μs     87.8±9μs     84.8±6μs
               sklearn.neighbors._ball_tree.BallTree    100         random        113±9μs      120±9μs      131±9μs      144±10μs
               sklearn.neighbors._ball_tree.BallTree    100        ordered        110±9μs      107±6μs      125±10μs     142±9μs
               sklearn.neighbors._ball_tree.BallTree    100    reverse_ordered    107±6μs      108±6μs      110±8μs      223±20μs
               sklearn.neighbors._ball_tree.BallTree    100       duplicated      413±30μs     165±10μs     162±20μs     155±30μs
               sklearn.neighbors._ball_tree.BallTree    1000        random        135±10μs     148±20μs     178±40μs     182±20μs
               sklearn.neighbors._ball_tree.BallTree    1000       ordered        107±5μs      110±5μs      133±20μs     147±5μs
               sklearn.neighbors._ball_tree.BallTree    1000   reverse_ordered    106±5μs      124±30μs     151±30μs     178±20μs
               sklearn.neighbors._ball_tree.BallTree    1000      duplicated     2.79±0.1ms    733±20μs     673±50μs     633±20μs
               sklearn.neighbors._ball_tree.BallTree   10000        random        144±5μs      145±4μs      168±6μs      206±6μs
               sklearn.neighbors._ball_tree.BallTree   10000       ordered        120±4μs      130±5μs      147±5μs      186±6μs
               sklearn.neighbors._ball_tree.BallTree   10000   reverse_ordered    115±2μs      128±5μs      136±4μs      170±5μs
               sklearn.neighbors._ball_tree.BallTree   10000      duplicated      36.9±1ms    6.26±0.2ms   6.07±0.2ms    6.85±1ms
              ======================================= ======= ================= ============ ============ ============ ============

@jjerphan
Copy link
Author

jjerphan commented Apr 9, 2021

Raw results of removing stats.

See scikit-learn/scikit-learn#13331 for reference.

· Creating environments
· Discovering benchmarks
·· Uninstalling from conda-py3.9-cython-joblib-numpy-scipy-threadpoolctl
·· Installing 7dd7c947 <remove_stats> into conda-py3.9-cython-joblib-numpy-scipy-threadpoolctl.
· Running 4 total benchmarks (2 commits * 1 environments * 2 benchmarks)
[  0.00%] · For scikit-learn commit 7dd7c947 <remove_stats>:
[  0.00%] ·· Benchmarking conda-py3.9-cython-joblib-numpy-scipy-threadpoolctl
[ 25.00%] ··· binary_tree.BinaryTreeCreation.time_creation                                                                                                                                                                                                               ok
[ 25.00%] ··· ======================================= ======= ================= ============= ============= ============= =============
              --                                                                                       leaf_size                       
              ----------------------------------------------------------------- -------------------------------------------------------
                             BinaryTree                  n       matrix_type          1             20            40           100     
              ======================================= ======= ================= ============= ============= ============= =============
                 sklearn.neighbors._kd_tree.KDTree       10         random         100±10μs      183±30μs      201±40μs      200±20μs  
                 sklearn.neighbors._kd_tree.KDTree       10        ordered        292±200μs      135±20μs      115±5μs       116±6μs   
                 sklearn.neighbors._kd_tree.KDTree       10    reverse_ordered     120±5μs       113±4μs       114±6μs       114±7μs   
                 sklearn.neighbors._kd_tree.KDTree       10       duplicated       116±7μs       114±20μs      117±5μs       108±3μs   
                 sklearn.neighbors._kd_tree.KDTree      100         random         148±6μs       116±3μs       114±4μs       119±4μs   
                 sklearn.neighbors._kd_tree.KDTree      100        ordered         154±40μs      124±9μs       124±7μs       121±3μs   
                 sklearn.neighbors._kd_tree.KDTree      100    reverse_ordered     140±9μs       111±6μs       104±9μs       85.1±1μs  
                 sklearn.neighbors._kd_tree.KDTree      100       duplicated       108±6μs       95.0±3μs      91.2±2μs      89.6±2μs  
                 sklearn.neighbors._kd_tree.KDTree      1000        random         462±10μs      252±7μs       218±7μs       186±5μs   
                 sklearn.neighbors._kd_tree.KDTree      1000       ordered         342±10μs      182±3μs       172±6μs       142±3μs   
                 sklearn.neighbors._kd_tree.KDTree      1000   reverse_ordered     358±9μs       186±4μs       173±5μs       150±4μs   
                 sklearn.neighbors._kd_tree.KDTree      1000      duplicated       277±5μs       170±5μs       163±5μs       144±4μs   
                 sklearn.neighbors._kd_tree.KDTree     10000        random       4.38±0.08ms   2.07±0.05ms   1.94±0.06ms   1.67±0.04ms 
                 sklearn.neighbors._kd_tree.KDTree     10000       ordered        3.52±0.1ms   1.57±0.04ms   1.34±0.03ms   1.08±0.02ms 
                 sklearn.neighbors._kd_tree.KDTree     10000   reverse_ordered    3.42±0.1ms   1.57±0.04ms   1.27±0.02ms   1.09±0.02ms 
                 sklearn.neighbors._kd_tree.KDTree     10000      duplicated     2.68±0.05ms   1.33±0.03ms   1.17±0.02ms   1.02±0.02ms 
               sklearn.neighbors._ball_tree.BallTree     10         random         86.7±4μs      84.2±2μs      79.2±2μs      79.9±2μs  
               sklearn.neighbors._ball_tree.BallTree     10        ordered         81.6±2μs      79.3±2μs      80.2±2μs      80.4±2μs  
               sklearn.neighbors._ball_tree.BallTree     10    reverse_ordered     82.8±2μs      80.8±2μs      80.8±1μs      85.7±2μs  
               sklearn.neighbors._ball_tree.BallTree     10       duplicated       87.8±2μs      85.0±2μs      83.7±2μs      84.3±2μs  
               sklearn.neighbors._ball_tree.BallTree    100         random         107±3μs       91.9±2μs      87.7±2μs      80.1±2μs  
               sklearn.neighbors._ball_tree.BallTree    100        ordered         99.0±2μs      86.4±2μs      88.7±3μs      85.8±3μs  
               sklearn.neighbors._ball_tree.BallTree    100    reverse_ordered     105±2μs       90.7±2μs      83.3±2μs      80.4±2μs  
               sklearn.neighbors._ball_tree.BallTree    100       duplicated       96.7±2μs      85.1±2μs      83.7±2μs      81.6±2μs  
               sklearn.neighbors._ball_tree.BallTree    1000        random         413±9μs       251±8μs       205±4μs       177±4μs   
               sklearn.neighbors._ball_tree.BallTree    1000       ordered         299±7μs       199±6μs       174±5μs       154±4μs   
               sklearn.neighbors._ball_tree.BallTree    1000   reverse_ordered     331±9μs       188±3μs       175±4μs       153±3μs   
               sklearn.neighbors._ball_tree.BallTree    1000      duplicated       289±8μs       185±5μs       157±2μs       141±3μs   
               sklearn.neighbors._ball_tree.BallTree   10000        random       4.26±0.09ms   2.29±0.05ms   2.03±0.06ms   1.76±0.04ms 
               sklearn.neighbors._ball_tree.BallTree   10000       ordered        3.10±0.1ms   1.65±0.05ms   1.45±0.03ms   1.25±0.03ms 
               sklearn.neighbors._ball_tree.BallTree   10000   reverse_ordered   3.21±0.07ms   1.67±0.04ms   1.36±0.02ms   1.17±0.02ms 
               sklearn.neighbors._ball_tree.BallTree   10000      duplicated     2.64±0.06ms   1.44±0.03ms   1.26±0.02ms   1.11±0.02ms 
              ======================================= ======= ================= ============= ============= ============= =============

[ 50.00%] ··· binary_tree.BinaryTreeQuery.time_query                                                                                                                                                                                                                     ok
[ 50.00%] ··· ======================================= ======= ================= ============= ============ ============ ============
              --                                                                                     leaf_size                      
              ----------------------------------------------------------------- ----------------------------------------------------
                             BinaryTree                  n       matrix_type          1            20           40          100     
              ======================================= ======= ================= ============= ============ ============ ============
                 sklearn.neighbors._kd_tree.KDTree       10         random         88.6±2μs     73.8±3μs     73.7±3μs     78.0±3μs  
                 sklearn.neighbors._kd_tree.KDTree       10        ordered         91.7±3μs     72.3±2μs     72.2±2μs     73.7±4μs  
                 sklearn.neighbors._kd_tree.KDTree       10    reverse_ordered     96.3±3μs     78.9±2μs     78.5±2μs     78.6±2μs  
                 sklearn.neighbors._kd_tree.KDTree       10       duplicated       138±3μs      73.7±2μs     68.8±2μs     69.9±2μs  
                 sklearn.neighbors._kd_tree.KDTree      100         random         113±3μs      102±6μs      111±6μs      128±4μs   
                 sklearn.neighbors._kd_tree.KDTree      100        ordered         108±2μs      90.0±2μs     94.5±2μs     109±3μs   
                 sklearn.neighbors._kd_tree.KDTree      100    reverse_ordered     121±3μs      96.9±1μs     98.2±2μs     170±5μs   
                 sklearn.neighbors._kd_tree.KDTree      100       duplicated       682±10μs     142±2μs      122±3μs      111±2μs   
                 sklearn.neighbors._kd_tree.KDTree      1000        random         141±3μs      134±5μs      140±5μs      182±10μs  
                 sklearn.neighbors._kd_tree.KDTree      1000       ordered         147±8μs      143±10μs     122±2μs      141±3μs   
                 sklearn.neighbors._kd_tree.KDTree      1000   reverse_ordered     150±2μs      136±4μs      140±3μs      158±4μs   
                 sklearn.neighbors._kd_tree.KDTree      1000      duplicated      5.49±0.2ms    873±30μs     634±10μs     552±10μs  
                 sklearn.neighbors._kd_tree.KDTree     10000        random         180±2μs      183±5μs      181±6μs      215±8μs   
                 sklearn.neighbors._kd_tree.KDTree     10000       ordered         169±4μs      145±4μs      156±4μs      184±6μs   
                 sklearn.neighbors._kd_tree.KDTree     10000   reverse_ordered     186±3μs      158±5μs      165±3μs      189±3μs   
                 sklearn.neighbors._kd_tree.KDTree     10000      duplicated      76.6±0.7ms   7.23±0.2ms   5.86±0.1ms   5.22±0.1ms 
               sklearn.neighbors._ball_tree.BallTree     10         random         78.8±2μs     75.2±2μs     74.7±2μs     75.2±3μs  
               sklearn.neighbors._ball_tree.BallTree     10        ordered         76.4±2μs     69.8±1μs     70.2±2μs     67.2±1μs  
               sklearn.neighbors._ball_tree.BallTree     10    reverse_ordered     72.7±1μs     71.3±1μs     71.7±1μs     72.3±1μs  
               sklearn.neighbors._ball_tree.BallTree     10       duplicated      91.8±0.9μs    67.2±1μs     66.9±1μs     67.5±1μs  
               sklearn.neighbors._ball_tree.BallTree    100         random         95.0±1μs     97.8±4μs     104±6μs      128±3μs   
               sklearn.neighbors._ball_tree.BallTree    100        ordered         92.2±3μs     86.4±2μs     94.3±3μs     108±2μs   
               sklearn.neighbors._ball_tree.BallTree    100    reverse_ordered     86.1±2μs     81.9±1μs     89.3±1μs     165±3μs   
               sklearn.neighbors._ball_tree.BallTree    100       duplicated       354±9μs      121±2μs      112±2μs      107±2μs   
               sklearn.neighbors._ball_tree.BallTree    1000        random         110±2μs      121±4μs      129±4μs      153±7μs   
               sklearn.neighbors._ball_tree.BallTree    1000       ordered         96.7±2μs     98.1±2μs     107±1μs      137±3μs   
               sklearn.neighbors._ball_tree.BallTree    1000   reverse_ordered     101±2μs      102±3μs      107±2μs      128±2μs   
               sklearn.neighbors._ball_tree.BallTree    1000      duplicated     2.41±0.06ms    648±10μs     559±10μs     527±10μs  
               sklearn.neighbors._ball_tree.BallTree   10000        random         133±2μs      145±4μs      161±6μs      208±7μs   
               sklearn.neighbors._ball_tree.BallTree   10000       ordered         118±3μs      117±2μs      131±4μs      162±3μs   
               sklearn.neighbors._ball_tree.BallTree   10000   reverse_ordered     115±3μs      110±2μs      123±2μs      152±3μs   
               sklearn.neighbors._ball_tree.BallTree   10000      duplicated      34.1±0.5ms   5.39±0.1ms   4.86±0.1ms   4.82±0.1ms 
              ======================================= ======= ================= ============= ============ ============ ============

[ 50.00%] · For scikit-learn commit 80e985b5 <main>:
[ 50.00%] ·· Building for conda-py3.9-cython-joblib-numpy-scipy-threadpoolctl..
[ 50.00%] ·· Benchmarking conda-py3.9-cython-joblib-numpy-scipy-threadpoolctl
[ 75.00%] ··· binary_tree.BinaryTreeCreation.time_creation                                                                                                                                                                                                               ok
[ 75.00%] ··· ======================================= ======= ================= ============= ============= ============= =============
              --                                                                                       leaf_size                       
              ----------------------------------------------------------------- -------------------------------------------------------
                             BinaryTree                  n       matrix_type          1             20            40           100     
              ======================================= ======= ================= ============= ============= ============= =============
                 sklearn.neighbors._kd_tree.KDTree       10         random         87.6±2μs      86.2±2μs      81.9±2μs      82.2±2μs  
                 sklearn.neighbors._kd_tree.KDTree       10        ordered         85.3±2μs      82.7±2μs      86.9±4μs      87.6±2μs  
                 sklearn.neighbors._kd_tree.KDTree       10    reverse_ordered     88.9±3μs      83.8±2μs      83.1±2μs      84.5±2μs  
                 sklearn.neighbors._kd_tree.KDTree       10       duplicated       85.9±2μs      84.5±2μs      84.5±1μs      83.9±1μs  
                 sklearn.neighbors._kd_tree.KDTree      100         random         113±3μs       91.9±2μs      88.7±2μs      85.1±2μs  
                 sklearn.neighbors._kd_tree.KDTree      100        ordered         109±2μs       91.5±2μs      88.3±2μs      85.1±2μs  
                 sklearn.neighbors._kd_tree.KDTree      100    reverse_ordered     111±2μs       91.6±2μs      90.3±2μs      86.9±1μs  
                 sklearn.neighbors._kd_tree.KDTree      100       duplicated       105±1μs       93.2±1μs     90.7±0.8μs    87.3±0.5μs 
                 sklearn.neighbors._kd_tree.KDTree      1000        random         438±10μs      241±4μs       211±5μs       181±3μs   
                 sklearn.neighbors._kd_tree.KDTree      1000       ordered         350±8μs       187±3μs       166±2μs       146±3μs   
                 sklearn.neighbors._kd_tree.KDTree      1000   reverse_ordered     385±10μs      200±7μs       175±5μs       151±3μs   
                 sklearn.neighbors._kd_tree.KDTree      1000      duplicated       301±8μs       175±2μs       165±4μs       147±4μs   
                 sklearn.neighbors._kd_tree.KDTree     10000        random        4.65±0.1ms   2.21±0.05ms   1.82±0.03ms   1.58±0.02ms 
                 sklearn.neighbors._kd_tree.KDTree     10000       ordered       3.31±0.07ms   1.47±0.03ms   1.27±0.02ms   1.10±0.02ms 
                 sklearn.neighbors._kd_tree.KDTree     10000   reverse_ordered   3.46±0.06ms   1.59±0.04ms   1.38±0.03ms   1.18±0.03ms 
                 sklearn.neighbors._kd_tree.KDTree     10000      duplicated     2.89±0.06ms   1.42±0.04ms   1.25±0.03ms   1.08±0.02ms 
               sklearn.neighbors._ball_tree.BallTree     10         random         84.3±2μs      81.5±1μs      81.8±1μs      79.5±2μs  
               sklearn.neighbors._ball_tree.BallTree     10        ordered         81.1±2μs      79.7±2μs      80.4±2μs      80.5±2μs  
               sklearn.neighbors._ball_tree.BallTree     10    reverse_ordered     83.1±2μs      80.3±2μs      80.6±1μs      84.2±2μs  
               sklearn.neighbors._ball_tree.BallTree     10       duplicated       86.6±2μs      83.2±2μs      83.6±2μs      83.0±2μs  
               sklearn.neighbors._ball_tree.BallTree    100         random         106±2μs       90.3±2μs      87.2±2μs      84.2±2μs  
               sklearn.neighbors._ball_tree.BallTree    100        ordered         103±2μs       89.5±2μs      86.9±2μs      83.6±2μs  
               sklearn.neighbors._ball_tree.BallTree    100    reverse_ordered     99.2±2μs      89.8±2μs      86.4±2μs      79.1±2μs  
               sklearn.neighbors._ball_tree.BallTree    100       duplicated       97.0±2μs      84.9±2μs      84.1±2μs      82.0±2μs  
               sklearn.neighbors._ball_tree.BallTree    1000        random         381±4μs       238±4μs       211±3μs       182±3μs   
               sklearn.neighbors._ball_tree.BallTree    1000       ordered         302±6μs       188±3μs       166±2μs       147±2μs   
               sklearn.neighbors._ball_tree.BallTree    1000   reverse_ordered     313±4μs       193±3μs       169±2μs       147±3μs   
               sklearn.neighbors._ball_tree.BallTree    1000      duplicated       276±5μs       180±2μs       161±2μs       144±2μs   
               sklearn.neighbors._ball_tree.BallTree   10000        random       3.93±0.09ms   2.18±0.03ms   1.91±0.03ms   1.68±0.03ms 
               sklearn.neighbors._ball_tree.BallTree   10000       ordered       2.91±0.06ms   1.57±0.03ms   1.36±0.02ms   1.19±0.02ms 
               sklearn.neighbors._ball_tree.BallTree   10000   reverse_ordered   3.02±0.05ms   1.58±0.02ms   1.48±0.03ms   1.27±0.02ms 
               sklearn.neighbors._ball_tree.BallTree   10000      duplicated     2.82±0.05ms   1.55±0.03ms   1.27±0.03ms   1.18±0.03ms 
              ======================================= ======= ================= ============= ============= ============= =============

[100.00%] ··· binary_tree.BinaryTreeQuery.time_query                                                                                                                                                                                                                     ok
[100.00%] ··· ======================================= ======= ================= ============= ============ ============ ============
              --                                                                                     leaf_size                      
              ----------------------------------------------------------------- ----------------------------------------------------
                             BinaryTree                  n       matrix_type          1            20           40          100     
              ======================================= ======= ================= ============= ============ ============ ============
                 sklearn.neighbors._kd_tree.KDTree       10         random         90.0±2μs     71.6±2μs     72.2±1μs     72.0±1μs  
                 sklearn.neighbors._kd_tree.KDTree       10        ordered         88.1±2μs     69.4±2μs     70.2±1μs     69.9±1μs  
                 sklearn.neighbors._kd_tree.KDTree       10    reverse_ordered     94.2±2μs     77.1±1μs     77.3±1μs     81.5±2μs  
                 sklearn.neighbors._kd_tree.KDTree       10       duplicated       135±3μs      71.8±1μs     71.5±1μs     71.7±1μs  
                 sklearn.neighbors._kd_tree.KDTree      100         random         115±2μs      99.1±1μs     106±2μs      121±3μs   
                 sklearn.neighbors._kd_tree.KDTree      100        ordered         116±3μs      97.0±3μs     101±3μs      114±4μs   
                 sklearn.neighbors._kd_tree.KDTree      100    reverse_ordered     126±3μs      102±3μs      104±2μs      175±3μs   
                 sklearn.neighbors._kd_tree.KDTree      100       duplicated       673±10μs     150±4μs      128±4μs      118±4μs   
                 sklearn.neighbors._kd_tree.KDTree      1000        random         143±3μs      134±3μs      144±4μs      170±4μs   
                 sklearn.neighbors._kd_tree.KDTree      1000       ordered         135±3μs      120±3μs      127±3μs      150±4μs   
                 sklearn.neighbors._kd_tree.KDTree      1000   reverse_ordered     152±4μs      134±3μs      138±3μs      155±4μs   
                 sklearn.neighbors._kd_tree.KDTree      1000      duplicated      5.34±0.1ms    808±20μs     641±10μs     566±8μs   
                 sklearn.neighbors._kd_tree.KDTree     10000        random         188±4μs      164±6μs      186±5μs      222±5μs   
                 sklearn.neighbors._kd_tree.KDTree     10000       ordered         166±4μs      144±3μs      155±4μs      183±3μs   
                 sklearn.neighbors._kd_tree.KDTree     10000   reverse_ordered     197±4μs      163±4μs      172±4μs      198±5μs   
                 sklearn.neighbors._kd_tree.KDTree     10000      duplicated       80.9±1ms    7.21±0.1ms   5.88±0.1ms   4.92±0.1ms 
               sklearn.neighbors._ball_tree.BallTree     10         random         74.8±2μs     67.6±1μs     69.1±1μs     69.9±1μs  
               sklearn.neighbors._ball_tree.BallTree     10        ordered         74.8±2μs     67.8±2μs     68.1±1μs     68.0±1μs  
               sklearn.neighbors._ball_tree.BallTree     10    reverse_ordered     74.0±1μs     72.5±2μs     72.8±1μs     73.2±1μs  
               sklearn.neighbors._ball_tree.BallTree     10       duplicated       93.5±2μs     67.1±1μs     67.4±1μs     67.6±1μs  
               sklearn.neighbors._ball_tree.BallTree    100         random         95.6±2μs     91.9±2μs     103±2μs      122±2μs   
               sklearn.neighbors._ball_tree.BallTree    100        ordered         87.7±1μs     84.7±2μs     98.8±3μs     120±3μs   
               sklearn.neighbors._ball_tree.BallTree    100    reverse_ordered     89.5±2μs     86.5±2μs     96.3±2μs     169±3μs   
               sklearn.neighbors._ball_tree.BallTree    100       duplicated       354±8μs      126±2μs      117±2μs      116±4μs   
               sklearn.neighbors._ball_tree.BallTree    1000        random         116±3μs      120±3μs      134±3μs      163±3μs   
               sklearn.neighbors._ball_tree.BallTree    1000       ordered         101±2μs      103±3μs      113±2μs      142±4μs   
               sklearn.neighbors._ball_tree.BallTree    1000   reverse_ordered     99.2±2μs     102±2μs      114±3μs      142±3μs   
               sklearn.neighbors._ball_tree.BallTree    1000      duplicated     2.47±0.05ms    688±10μs     619±10μs     578±10μs  
               sklearn.neighbors._ball_tree.BallTree   10000        random         135±2μs      139±3μs      158±3μs      208±5μs   
               sklearn.neighbors._ball_tree.BallTree   10000       ordered         119±3μs      119±3μs      135±3μs      164±2μs   
               sklearn.neighbors._ball_tree.BallTree   10000   reverse_ordered     117±3μs      119±3μs      129±2μs      164±3μs   
               sklearn.neighbors._ball_tree.BallTree   10000      duplicated      35.0±0.6ms   6.34±0.1ms   5.74±0.1ms   5.45±0.1ms 
              ======================================= ======= ================= ============= ============ ============ ============

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment