符号
notations的Python项目详细描述
符号
通过查看给定python函数中的循环嵌套级别,静态估计该函数的asymptotic notation。
这是一个早期的原型
示例
fromnotationsimportnotationdefmy_example_function(arg1,arg2):f=0forainarg1:foriina:f+=1forbinarg2:forjinb:f+=1print(notation(my_example_function))
将打印Θ(n^2)
有关更多示例,请参见test_notations.py
。
待办事项
这是现阶段一个概念的草图。
while
运算符- 看看函数中输入参数之间的关系,仅仅因为循环是嵌套的,并不意味着
O(n_n)
是正确的 - 循环中的分支
- 测试理解
常见问题解答
- 为什么不使用ast?AST不能在运行时(容易地)从代码对象生成,此库用于计算编译函数的执行顺序。
- 如果不运行代码,您怎么可能计算顺序?此函数通过查看函数中循环嵌套的级别、理解的使用以及参数之间的关系来确定顺序。动态运行时基准测试易受环境条件(噪音邻居)的影响,而且已经有很多工具可以做到这一点
研究笔记
更改
0.2.0
- 更改为repr的θ值
0.1.0
- 支持基本for循环的初始原型