PybDn11某种程度上减缓C++功能

2024-09-26 18:19:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我看到的所有stackoverflow/github问题都是关于在编组对象时加快Python函数调用的速度。 但是我的问题是关于PyBdN11 C++模块函数中纯C++函数的工作时间。p>

我有从本地C++类库加载数据集和调用Cub方法的训练函数:

void runSvm() 
    // read smvlight file into required sparse representation
    auto problem = read_problem( "random4000x20.train.svml" );

    CSvmBinaryClassifierBuilder::CParams params( CSvmKernel::KT_Linear );
    params.Degree = 3;
    params.Gamma = 1/20;
    params.Coeff0 = 0;

    // measure time here
    using namespace std::chrono;
    system_clock::time_point startTime = high_resolution_clock::now();

    CSvmBinaryClassifierBuilder( params ).Train( *problem ); // measure time only for this line

    nanoseconds delay = duration_cast<nanoseconds>( high_resolution_clock::now() - startTime );
    std::cout << setprecision(3) << delay / 1e6 << std::endl;
}

我通过pybind11将此函数绑定到Python:

PYBIND11_MODULE(PythonWrapper, m) {
    m.def( "runSvm", &runSvm );
}

然后编译pybind11模块库并从Python调用它。计时器值超过3000毫秒。 但是当我从纯C++调用这个函数时,定时器值大约是800毫秒。 当然,我期待一些开销,但不是在这个地方,也不是那么多

我在一个线程中运行它,两种情况下它都100%加载一个内核

问题在哪里?谁面对同样的问题?你是如何处理的


Tags: 模块函数readtimeparamsnowstdmeasure
1条回答
网友
1楼 · 发布于 2024-09-26 18:19:50

当我在一个可重复的例子中工作时,我发现我在C++实例中比较不同的SVM内核(它是基于LIbVSVM PARAMS证明的‘RBF’)和PybDn11LIB(它是硬编码的‘线性’)。在修复它并比较相同的算法后,时间上没有差异

相关问题 更多 >

    热门问题