Python函数实现

2024-09-30 01:37:14 发布

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

我已经看到了各种各样的球碰撞检测问题的答案,解释了为什么sqrt运算速度慢,为什么绝对值运算在浮桥上很快等等。我怎样才能找出哪些操作是昂贵的,哪些不是?在

基本上,我正在寻找一个资源,在那里我可以了解所有python库函数的实现。当人们说这些话的时候,他们实际上并没有考虑这些东西是如何在C中实现的,是吗?在

谢谢,希望了解更多关于这个光滑语言的实现细节。在


Tags: 答案语言sqrt资源细节速度慢碰撞检测库函数
3条回答

与任何语言一样,Python被翻译成机器代码,然后运行。所以是的,他们可能在谈论低层次的实现细节。在

总之,了解各种Python函数的快速实现的最佳方法是taking a look in the source code.

玩得开心!在

编辑:这个技巧实际上适用于我工作过的任何开源项目:有问题吗?看看源代码,你应该没问题。在

如果您正在寻找关于Python速度的一般提示,these performance tips是一个很好的资源。在

通过使用timeit模块可以找出哪些操作速度慢,哪些操作速度快。在

例如,比较一条直线内的各种方法,例如:

python -m timeit -s 'import math; x = 42.5; y = 17.2; r = 50.0' 'math.sqrt(x**2 + y**2) <= r'
python -m timeit -s 'import math; x = 42.5; y = 17.2; r = 50.0' 'math.hypot(x, y) <= r'
python -m timeit -s 'import math; x = 42.5; y = 17.2; r = 50.0' 'x**2 + y**2 <= r**2'

在我的机器上,结果是:

^{pr2}$

所以math.hypot赢了!顺便说一句,如果从内部循环中删除点式名称查找,则会获得稍微好一些的结果:

$ python -m timeit -s 'from math import hypot; x = 42.5; y = 17.2; r = 50.0' 'hypot(x, y) <= r'
1000000 loops, best of 3: 0.334 usec per loop

相关问题 更多 >

    热门问题