Skip to content

[FR] Consider switching to nanobind Python bindings #1521

@nicholasjng

Description

@nicholasjng

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.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions