- 浏览: 99752 次
- 性别:
- 来自: HK
文章分类
最新评论
-
Mr.小裤裤:
谢谢,
我生日过的很快乐,
o(∩_∩)o...
system badimageformatexception and its partial solution
python确实是十分慢的语言,有多慢?不好说,我测试过一些非io相关的程序,比java慢大约50倍是有的,比c++只会更慢(除了string操作外)
幸好python从来不缺各种工具,对于加快速度的工具选择更是丰富。数了一下有: pypy, psyco, cython,swig,pyrex等等。
这些工具的一个核心抽象说来只有一点:找出慢的部分然后把它变快。 直观的做法是把慢的部分变为c。。。通常一套程序和速度相关的部分只有20%是关键,把它优化了也就差不多了。另外一种做法就是jit了。直接变为机器码。
对于上述的这些工具曾经做过一番试用,总结下来如果需要考虑到易用性,跨平台性还有兼容性那么只有cython & swig满足这个要求。其他的方案总有些限制,故此暂时不作考虑。
cython swig哪个更好? 这个不好说。
cython可以提供更细粒度的交互,好比.net 下的 c++/cli。可以把py和c代码混用。能更方便控制性能部分的范围。
swig相当于P/Invoke
swig只能通过函数和class一级的调用,而且会生成额外的wrapper。性能上有一定损耗,而且wrapper本身未必能符合使用要求,最常见的做法还是引入类似pimpl技法,又封装一层。有时候看起来有些臃肿,cython本身没有这个问题
使用 cdef class 可以直接实现想要的接口。
不过cython使用的难度高于swig。后者只需要swig,a working compiler。py本身都不需要。适合封装原有的库。
而且swig本身支持十分多的语言,新版本2.0.4对py做了专门的优化,如果是想快速封装原有的库,用swig是不错的选择。
cython需要自行实现setup.py, 需要制作起码的pyx, pyd,语法方面需要花额外的时间去理解,不如swig直观。但是cython有个优点是可以把pure py code变为c的代码。 我测试过手头用的几何计算的函数,简单把py code变为c 可以
获得大约30%的提升,不用改一行代码,很可观。
对于新应用,会逐渐改用cython来实现。swig只保留用作兼容用途 或者给其他语言共用。
这两者都支持windows平台。我发现一个有趣的现象,在py里面,一般来说只要能在windows下用的,跨平台就不成问题。
发表评论
-
static building lxml
2014-08-13 19:15 817well it is not really straig ... -
build pyrun/python from source
2014-08-01 19:39 586quite easy on ubuntu. 1: ... -
build apsw manually
2014-01-06 01:22 545download sqlite sources and co ... -
python, vs 2010 & manifest problem
2013-11-02 13:33 631It looks like python com ... -
numpy 1.7.0 fails with cx_freeze 4.3.1
2013-02-24 16:13 851It is a work around: find ... -
build psycopg2 on windows with mingw64
2013-01-03 20:36 967caution: version match problem. ... -
Determining if a point lies on the interior of a polygon
2012-09-25 02:23 685link: http://paulbourke.net/geo ... -
pypy的一个测试
2012-06-09 16:15 1608pypy-1.9 昨天已经发布,据称性能又有所提高。 ... -
a naive way to use dictcursor of psycopg2 with twisted adbapi
2012-05-03 03:14 1165make a new file called fakedb.p ... -
build psycopg2 on windows with vs
2012-05-02 02:16 865prerequisites: 1: postgresq ... -
twisted iocp reactor is still buggy---it was fixed on 23/10/2012
2012-03-19 14:53 1260I reported a bug on last wee ... -
One way to speed up Pb invoke.
2012-03-14 21:31 844Pb (stands for Perspecti ... -
change buffer size in order to send chunks data in ampoule
2011-12-03 16:08 803ampoule use name pipe to commun ... -
which one is thread safe?
2011-09-21 12:31 918quote: It's not so much tha ... -
cython的另类用途
2011-08-04 02:30 1569都知道py虽然方便但是却有个不是问题的问题:就是发布时的二进制 ... -
instructions for installing some python's pkgs on ubuntu
2011-07-23 00:54 784make sure python-dev, gcc and o ... -
a tedious way to build the latest pytables
2011-07-17 03:33 715pyTables is a great product. It ... -
再谈twisted
2011-06-29 17:03 1435现在我手头用的是11.0。 很好。没什么很大的问题,原来的版本 ... -
cython的效果
2011-06-29 00:29 807我有个用py写的 crc-ccitt的验证程序(实现效率并不高 ... -
the simplest way to use vs 2010 with python
2011-06-03 15:48 672edit py/Lib/distutils/msvc9comp ...
相关推荐
论文《Speeding Up Multi-Relational Data Mining》由Anna Atramentov和Vasant Honavar撰写,主要关注如何加速多关系数据挖掘算法的运行时间,同时保持结果质量不变。研究者提出了一种通用的方法,该方法通过优化...
这是一篇介绍网站优化最佳实践的文章。文章为Yahoo发布在网上的,可以在其网站上找到。个人觉得,这里面提供的一些建议,规则,都有很实践性。值得每个Web设计人员参考。 ... 我就是把它压成了PDF,方便随时观看复习。
### 网站优化资料:Best Practices for Speeding Up Your Web Site #### 一、引言 随着互联网的发展,用户体验成为衡量网站成功与否的重要因素之一。网页加载速度直接影响着用户体验和搜索引擎排名。为了帮助...
### Speeding up MATLAB Applications #### 引言 MATLAB 是一种广泛应用于科学计算、数据分析以及算法开发的强大工具。为了提高 MATLAB 应用程序的运行效率,本文档将介绍一系列优化技巧,包括利用向量和矩阵操作...
虚拟化技术已成为现代数据中心和云计算平台不可或缺的一部分。然而,虚拟机中的网络性能,尤其是在高速率的封包输入输出(Packet I/O)方面,一直是一个技术挑战。传统的虚拟化设备仿真技术在处理大量TCP流量时效率...
" Spark 加速数据压缩 on Xeon+FPGA" 该论文主要介绍了使用 FPGA 加速 Spark 的方法,并通过数据压缩实现性能优化。下面是该论文中涉及的知识点: 1. 大数据处理挑战 随着数据量的增长,分布式处理变得越来越重要...
Spark 加速技术与 FPGA 集成 本文档主要讨论如何使用 FPGA 加速 Spark 应用程序,并通过数据压缩技术来提高性能。下面是相关知识点的总结: 一、Motivation * 大数据时代的到来,使得数据处理变得越来越复杂 ...
You will achieve parallelism to improve system performance by using multiple threads and speeding up your code. By the end of the book, you will be capable of handling various data analysis ...
【VolcanoML:端到端AutoML的可扩展搜索空间分解加速】 AutoML(自动化机器学习)已经成为学术界和工业界的焦点,它自动在特征工程、算法/模型选择和超参数调优诱导的空间中搜索最优的机器学习管道。...
Speeding up NetworkingVan Jacobson van@packetdesign.comBob Felderman feldy@precisionio.comPrecision I/OLinux.conf.au 2006 Dunedin, NZmailto:van@packetdesign.commailto:van@packetdesign.commailto:feldy...
# a very large string could be zipped and saved to a file speeding up file writing time # and later reloaded and unzipped by another program speeding up reading of the file # tested with Python2
### SAR图像压缩采样恢复的GPU并行实现 #### 一、引言 合成孔径雷达(SAR)是一种先进的遥感技术,通过飞机或卫星的移动将小阵元天线合成一个较大的虚拟天线孔径,从而获取地面场景的二维高分辨率图像。...
Speeding up the scaled conjugate gradient algorithm and its application in neuro-fuzzy classifier training. Soft Computing 14(4):365–378. [3] B. Cetişli (2010). Development of an adaptive neuro-...
DevOps小文,共13页用词严谨,视角独到,同时... Yet, based on the number of software failures now making headlines on a daily basis, it's evident that speeding up the SDLC opens the door to severe repercu
In 2009, Wu proposed a fast modular exponentiation algorithm and claimed that the proposed algorithm on average saved about 38.9% and 26.68% of single-precision multiplications as compared to Dussé–...
It describes the use of GPU, MEX, FPGA, and other forms of compiled code, as well as techniques for speeding up deployed applications. It details specific tips for MATLAB GUI, graphics, and I/O. It ...
It describes the use of GPU, MEX, FPGA, and other forms of compiled code, as well as techniques for speeding up deployed applications. It details specific tips for MATLAB GUI, graphics, and I/O. It ...
线条简化 使用 Douglas-Peucker 算法的线简化算法。 有关更多信息,请访问维基百科。 该模块分别包含通过DouglasPeucker2D和DouglasPeucker3D实现的 2D 和 3D。 要求: 支持 c++11 的编译器。...