Created
April 15, 2021 08:45
-
-
Save jjerphan/4bb326a67fcd944f2e01663383beaa5c to your computer and use it in GitHub Desktop.
Simple Benchmark for `sklearn.neighbours.BinaryTree`
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np | |
from sklearn.neighbors import KDTree, BallTree | |
from .common import Benchmark | |
class BinaryTreeStatsBenchmark(Benchmark): | |
""" | |
Base class for BinaryTree benchmarks for removing statistics. | |
""" | |
param_names = ['BinaryTree', 'n', 'd', 'leaf_size'] | |
params = ( | |
[KDTree, BallTree], | |
[100, 1000, 10000], | |
[10, 100, 1000], | |
[10, 100] | |
) | |
class BinaryTreeStatsCreation(BinaryTreeStatsBenchmark): | |
""" | |
Benchmarks for BinaryTree creation. | |
""" | |
def setup(self, BinaryTree, n, d, leaf_size): | |
self.samples = np.random.rand(n, d) | |
self.leaf_size = leaf_size | |
self.BinaryTree = BinaryTree | |
def time_creation(self, BinaryTree, n, d, leaf_size): | |
self.BinaryTree(self.samples, leaf_size=self.leaf_size) | |
class BinaryTreeStatsQuery(BinaryTreeStatsBenchmark): | |
""" | |
Benchmarks for BinaryTree queries. | |
""" | |
def setup(self, BinaryTree, n, d, leaf_size): | |
self.tree = BinaryTree(np.random.rand(n, d), leaf_size=leaf_size) | |
self.query_points = np.random.rand(n, d) | |
def time_query(self, BinaryTree, n, d, leaf_size): | |
self.tree.query( | |
self.query_points, | |
dualtree=False, | |
breadth_first=False, | |
sort_results=False) |
Raw results for scikit-learn/scikit-learn#19893:
[ 0.00%] · For scikit-learn commit 33c85c85 <rm-get_memview-nn-routines>:
[ 0.00%] ·· Benchmarking conda-py3.9-cython-joblib-numpy-scipy-threadpoolctl
[ 25.00%] ··· binary_tree.BinaryTreeStatsCreation.time_creation
[ 25.00%] ··· ======================================= ======= ============= ============ ============ ============ ============= ============
-- d / leaf_size
----------------------------------------------- -------------------------------------------------------------------------------
BinaryTree n 10 / 10 10 / 100 100 / 10 100 / 100 1000 / 10 1000 / 100
======================================= ======= ============= ============ ============ ============ ============= ============
sklearn.neighbors._kd_tree.KDTree 100 120±4μs 74.4±2μs 579±20μs 138±10μs 4.64±0.1ms 685±20μs
sklearn.neighbors._kd_tree.KDTree 1000 1.04±0.04ms 543±20μs 8.70±0.3ms 4.59±0.2ms 79.8±4ms 50.5±1ms
sklearn.neighbors._kd_tree.KDTree 10000 12.9±0.3ms 8.58±0.2ms 128±3ms 104±30ms 1.49±0.1s 1.03±0.07s
sklearn.neighbors._ball_tree.BallTree 100 97.7±2μs 68.9±2μs 322±8μs 88.8±2μs 2.54±0.06ms 319±9μs
sklearn.neighbors._ball_tree.BallTree 1000 678±10μs 387±9μs 4.85±0.1ms 4.92±0.3ms 62.9±20ms 31.4±0.9ms
sklearn.neighbors._ball_tree.BallTree 10000 9.32±0.2ms 6.39±0.1ms 86.1±3ms 58.5±8ms 1.01±0.06s 809±60ms
======================================= ======= ============= ============ ============ ============ ============= ============
[ 50.00%] ··· binary_tree.BinaryTreeStatsQuery.time_query
[ 50.00%] ··· ======================================= ======= ============ ============ ============= ============= ============ ============
-- d / leaf_size
----------------------------------------------- -------------------------------------------------------------------------------
BinaryTree n 10 / 10 10 / 100 100 / 10 100 / 100 1000 / 10 1000 / 100
======================================= ======= ============ ============ ============= ============= ============ ============
sklearn.neighbors._kd_tree.KDTree 100 931±100μs 460±10μs 6.53±0.2ms 2.29±0.08ms 35.3±10ms 11.8±0.4ms
sklearn.neighbors._kd_tree.KDTree 1000 30.5±2ms 14.2±1ms 326±30ms 139±2ms 3.16±0.2s 1.54±0.1s
sklearn.neighbors._kd_tree.KDTree 10000 776±10ms 721±30ms 45.4±1s 25.4±0.4s failed failed
sklearn.neighbors._ball_tree.BallTree 100 263±30μs 192±7μs 1.30±0.03ms 1.23±0.04ms 12.2±0.3ms 10.4±0.1ms
sklearn.neighbors._ball_tree.BallTree 1000 16.7±0.4ms 13.9±0.5ms 139±4ms 109±0.8ms 1.30±0.01s 1.18±0.01s
sklearn.neighbors._ball_tree.BallTree 10000 1.08±0.01s 1.68±0.1s 23.9±0.8s 21.4±0.3s failed failed
======================================= ======= ============ ============ ============= ============= ============ ============
[ 50.00%] · For scikit-learn commit 7fa2e6e2 <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.BinaryTreeStatsCreation.time_creation
[ 75.00%] ··· ======================================= ======= ============= ============ ============= ============= ============= ============
-- d / leaf_size
----------------------------------------------- ---------------------------------------------------------------------------------
BinaryTree n 10 / 10 10 / 100 100 / 10 100 / 100 1000 / 10 1000 / 100
======================================= ======= ============= ============ ============= ============= ============= ============
sklearn.neighbors._kd_tree.KDTree 100 130±3μs 85.4±2μs 574±10μs 156±4μs 4.71±0.1ms 743±20μs
sklearn.neighbors._kd_tree.KDTree 1000 1.05±0.03ms 584±20μs 8.24±0.2ms 4.40±0.2ms 83.0±1ms 40.6±0.3ms
sklearn.neighbors._kd_tree.KDTree 10000 12.5±0.2ms 8.41±0.1ms 116±1ms 86.3±0.8ms 1.31±0.05s 955±10ms
sklearn.neighbors._ball_tree.BallTree 100 109±2μs 79.6±1μs 341±6μs 108±5μs 2.58±0.05ms 295±5μs
sklearn.neighbors._ball_tree.BallTree 1000 691±10μs 402±7μs 4.93±0.09ms 2.87±0.09ms 55.7±0.6ms 31.2±0.6ms
sklearn.neighbors._ball_tree.BallTree 10000 9.89±0.2ms 6.74±0.2ms 85.1±0.8ms 57.1±0.5ms 999±20ms 722±20ms
======================================= ======= ============= ============ ============= ============= ============= ============
[100.00%] ··· binary_tree.BinaryTreeStatsQuery.time_query
[100.00%] ··· ======================================= ======= ============ ============ ============= ============= ============ ============
-- d / leaf_size
----------------------------------------------- -------------------------------------------------------------------------------
BinaryTree n 10 / 10 10 / 100 100 / 10 100 / 100 1000 / 10 1000 / 100
======================================= ======= ============ ============ ============= ============= ============ ============
sklearn.neighbors._kd_tree.KDTree 100 457±9μs 202±5μs 3.20±0.06ms 1.17±0.02ms 30.3±0.4ms 11.1±0.2ms
sklearn.neighbors._kd_tree.KDTree 1000 27.5±0.5ms 14.1±0.3ms 298±2ms 130±5ms 2.71±0.02s 1.25±0.01s
sklearn.neighbors._kd_tree.KDTree 10000 772±6ms 679±20ms 34.4±0.2s 21.6±0.3s failed failed
sklearn.neighbors._ball_tree.BallTree 100 240±5μs 186±3μs 1.25±0.02ms 1.05±0.02ms 11.7±0.2ms 10.1±0.2ms
sklearn.neighbors._ball_tree.BallTree 1000 17.7±0.4ms 14.8±0.4ms 131±0.8ms 116±1ms 1.31±0s 1.17±0.01s
sklearn.neighbors._ball_tree.BallTree 10000 1.03±0.01s 1.73±0.01s 22.0±0.6s 19.6±0.03s failed 1.96±0m
======================================= ======= ============ ============ ============= ============= ============ ============
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Raw results for scikit-learn/scikit-learn#19884 (obtained with
asv run -b BinaryTree
):