博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python算法优化c语言,用C语言优化python核心类
阅读量:5106 次
发布时间:2019-06-13

本文共 965 字,大约阅读时间需要 3 分钟。

这是一个概念性的问题,而不是一个特定的代码问题。我们正在研究优化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本身会产生更好的结果。你知道吗

转载地址:http://seudv.baihongyu.com/

你可能感兴趣的文章
基于docker的spark-hadoop分布式集群之一: 环境搭建
查看>>
oracle 几个时间函数探究
查看>>
第一个Java Web程序
查看>>
Atomic
查看>>
div 显示滚动条与div显示隐藏的CSS代码
查看>>
Redis-1-安装
查看>>
Access denied for user ''@'localhost' to database 'mysql'
查看>>
微信公众号里面使用地图导航
查看>>
部署支持 https 的 Nginx 服务
查看>>
‘Cordova/CDVPlugin.h’ file not found
查看>>
WebAssembly是什么?
查看>>
C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件)...
查看>>
20151214--JSTL
查看>>
树状数组_一维
查看>>
【拓扑排序】【最短路】【最小生成树】Day 9.2
查看>>
substring使用
查看>>
如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下:
查看>>
java.sql.Timestamp cannot be cast to java.sql.Date
查看>>
JS代码大全-2
查看>>
linux install ftp server
查看>>