python算法优化c语言,用C语言优化python核心类

本文探讨了优化Python代码中核心类的方法,特别是存储功能字典和排序列表的类。作者考虑了使用C扩展来提升性能,包括通过ctypes、C函数模块以及完全用C重写类的三种方式。目前代码已经过Cython优化,但作者想测试直接扩展到C是否会带来更大的性能提升。寻求关于最佳优化策略的见解。
摘要由CSDN通过智能技术生成

这是一个概念性的问题,而不是一个特定的代码问题。我们正在研究优化python代码中一些较低级别的“核心”类。目前有一个类基本上存储了一个功能字典,以及每个功能的排序列表。需要注意的是,该特性所代表的可以是任何数据类型。你知道吗

示例:blah = BasicClass()

print blah.data

>> {'a': [(1, 'foo'), (2, 'bar'), (10, 'baz')],

'b': [(100, -133231), (236, -99594)],

'c': [(27, [1,2]), (35, [1,2,3,4])]}

此类主要是实用函数,用于在给定条件下查找数据字段中的值。你知道吗

方法如下:

获取(feat,val)后的第一个\u值-给定一个特征和一些数字,在data[feat]中找到索引为>val的第一个条目

获取\u范围内的\u值(feat,start,end)-给定一个范围,查找数据[feat]中索引在start和end之间的所有部分

以此类推。你知道吗

我正在考虑优化这个类,使其尽可能地提高性能,因为它在我们的许多堆栈中都会被调用。我一直在考虑合并C,因为从理论上讲,这会带来一些好处,但似乎有很多方法可以扩展到C,我不确定该走哪条路。你知道吗

在我的脑海里:Ctypes函数-在C中创建函数,不引用python头文件。一切都将使用本机c,并通过ctypes.CDLL文件打电话。希望python在传入之前进行ctype转换。

C函数模块-创建一个使用pythons C API并正确返回PyObjects的助手函数模块。然后在上面的类中,我将只生成传递给c模块函数的方法

def get_first_val_after(self, feat, val):

return get_first_val_after_c(self.data[feat], val)

用C重写整个类—这将允许我们的底层数据结构是本机C,并且函数可能会更快。

我有一点1和2的经验,但我从来没有做过3之前,我希望有人能够给我的见解,其中可能会产生最好的结果。你知道吗

先谢谢你。你知道吗

编辑:如下所述,我们目前对整个文件进行了cythonize。我想测试是否扩展到C本身会产生更好的结果。你知道吗

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值