-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
Is your feature request related to a problem? Please describe.
Not a problem, more an idea: For Python >=3.8 bindings using C++17, the nanobind project (from the same hand as pybind11) promises binary size reductions and runtime performance increases (~40% in their benchmarks) over pybind11 for frequently re-called functions in a loop.
For a benchmark library, runtime performance benefits like these could be interesting - especially since the quoted runtime performance increase for "calling functions repeatedly in a loop" fits the bill exactly in this case.
Describe the solution you'd like
Implement the GBM Python bindings in nanobind instead, measure the performance / binding size differences, decide where to go from there after interpreting the results.
Describe alternatives you've considered
Staying with the current thing.
Additional context
I want to do this as a personal experiment, to learn how to implement C++ Python bindings. If something comes out of it other than the nanobind-specific results (better/any docstrings, type hints etc), they could be added to the existing bindings, too.
Not sure how stable nanobind is right now, but since it has pybind11 as its direct predecessor project, it might already work sufficiently for this scope.