发布时间:2026-06-03
浏览次数:0
这篇文章会给出一些用于优化代码的工具, 这些工具能够使代码变得更为简洁, 又会让代码变得更加迅速。
当然这些并不能代替算法设计,但是还是能让 加速很多倍。
实际上, 之前讲述算法的相关篇章, 也曾有过提及, 如此这般, 像那适用于双向队列的deque, 以及于恰当情况之下运用, 还有heapq来促使算法性能得以提升。
更何况, 在前面部分曾经叙述过, 给出了当下最为高级同时也就是最为有效的排序算法, 即(list.sort)。
此外存在一个具备多样功能且速度较快的散列表(dict)情况。并且当撰写迭代器封装、功能性代码或者某些特殊额外扩展之际, 或许能够用得上。当然在相关模块当中, 存在诸多函数能够带来极为高效的代码情形。
这篇文章着重讲对单处理器代码予以优化, 接下来会介绍某些高效的函数实现, 存在已封装好的拓展模块, 也涵盖速度更加快的解释器。
确实, 多处理器版本能够极大提升运行效率。若想知晓多核编程, 可从模块着手。并且, 也存在诸多关于分布式计算的第三方工具。在此, 不妨查看一下wiki上有关的内容。
接下来,会说一些关于 加速工具的选单。
NumPy、SciPy、Sage 和
先讲讲 NumPy, 它的关键部分是对多维数字数组予以实现, 除了这个数据结构以外, 又实现了好些函数与运算符, 能够高效开展数组运算, 而且对被调用的次数做了减缩, 它能够用来开展极为高效的数学运算。
SciPy把NumPy当作自身一部分内置起来, Sage同样如此, 并且它们还内置了别的不同工具, 这些工具能当成可用于特定科学、数学以及高性能计算的模块。
这个工具着重于数据分析, 在处理大量半结构化数据的情形下, 或许会用到相关工具, 像Blaze这样的。
PyPy、、、Psyco 和
能够让代码运行得更为迅速, 且侵入性达到最小程度的方式便是运用实时编译器(即 JIT 编译)。要是放在以前, 我们能够直接把 Psyco 进行安装。在安装完毕以后将 psyco 予以导入, 接着调用 psyco.full()。如此一来代码的运行速度便能够得到显著的提高。当运行代码之际, 它能够对程序实施实时监控, 会把一部分代码编译成机器码。
当下, 相当多诸如 Psyco 这般的加速器相关项目, 已然处于停止维护的状态了, 但是, 与之相似的功能, 于 PyPy 里得以实现了继承。
PyPy 为达便于分析、利于优化以及能够翻译之便, 借助某语言把某事物重新进行了一番实现, 如此一来便能够实施 JIT 编译, 并且 PyPy 还能够径直把代码翻译成为像 C 那般性能更为优良的语言。
它是一种JIT编译器, 属于解释器的某个版本, 被称作底层虚拟机(LLVM), 然而这个相关开发已终止了。
某 JIT 编译器, 它和 LLVM 平台比较接近, 很多时候, 它的优越程度已然超过了相关实现, 然而, 它存在不少地方尚不完美。
、、 和 、
这四个均是借助图像处理单元达成代码的加速目的, 先行讲述的皆是依靠代码优化达成加速的情况, 而这些全都是从硬件层面着手进行加速的, 要是存在一个强大的图形处理器, 我们能够运用图形处理器展开计算, 进而削减中央处理器宝贵的资源。
古老一点。 提供了基于 GPU 的各种形式的数据计算。
如果用 GPU 加速自己的代码codejock xtremetoolkitpro,可以用 和 。
Pyrex、、Numba 和 、
这四个项目都在努力把代码转化成C、C++以及LLVM的代码, 会把代码编译成C++语言, Pyrex编译的主要对象是C语言, 它也是Pyrex的一个分支。
而且,还有 NumPy 数组的额外支持。
在面向数组之际, 于进行数学计算之时, Numba是更为优良的选择, 导入之际会自动生成相应的LLVM代码。升级版本是, 还给出了对GPU的支持。
SWIG、F2PY、Boost.
这些工具能够把别的语言包装成的模块, 第一个能够包装 C/C++语言, F2PY 能够包装codejock xtremetoolkitpro,Boost.能够包装 C++语言。
只要开启一个命令行的工具, 朝着其中键入C又或者C++的头文件, 封装器的代码便会自行生成, 不过, 并且能够作为其他语言的封装器, 就像Java以及PHP。
、llvm-py 和
这般模块能够协助咱们达成底层对象的操控, 模块能够运用于于内存里搭建编译C的对象, 并且去调用共享库之中的C的函数, 然而已经被涵盖在的标准库之内了。
llvm - py主要给出LLVM的接口, 借此以利于构建代码, 而后对其进行编译, 还能够于其中构建它的编译器。当然, 搞出自身的编程语言亦是可行的句号。
也可以进行加速,不过这个加速是运行在汇编层的。
Weave、Cinpy 和
这三个包, 能够让我们于 代码里直接运用 C 语言或者别的高级语言。混合代码, 依旧能够维持整洁。能够运用 代码的字符串的多行特性, 可使别的代码依照自身的风格去进行排版。
其他工具
假设我们打算节省内存, 那么就不可以使用 JIT 了。通常情况下, JIT 实在太耗费内存。有一句表述说得极为正确, 时间与内存常常无法同时兼顾, 而我们于工程开发当中, 始终要找寻它们之间的平衡点。
其它的特定事物中有 Micro 项目, 它被应用于嵌入式设备, 它也被应用于微控制器之上, 此外对此加以作用。
若仅仅是打算于特定环境里开展工作, 随后想要运用别的语言, 那么可以瞧瞧这个名为Julia的项目。
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码