我一直在玩测量大代码库的圈复杂度.
循环复杂性是通过程序源代码的线性独立路径的数量,并且有许多免费工具可供您选择的语言.
结果很有趣,但并不令人惊讶.也就是说,我知道最毛茸茸的部分实际上是最复杂的(评级> 50).但我发现有用的是,在决定从哪里开始重构时,我可以指出为每个方法分配一个具体的"坏"数字.
你使用圈复杂度吗?您找到的最复杂的代码是什么?
所以假设我在pandas中有一个DataFrame,其中包含am行和n列.我们还要说我想颠倒列的顺序,可以使用以下代码完成:
df_reversed = df[df.columns[::-1]]
Run Code Online (Sandbox Code Playgroud)
这项行动的大O复杂性是什么?我假设这将取决于列数,但它还取决于行数?
在研究算法和数据结构时,我手动评估了脚本的 BigO 复杂性。有没有办法,比如任何 Python IDE 或包中的一个按钮,来计算任何给定函数或程序的 BigO?
更新:
假设我有
def print_first_element(a):
print a[0]
Run Code Online (Sandbox Code Playgroud)
为什么我不能编写分析器,它会说我可以通过索引及其 O(1) 访问数组(列表),或者
def print_all_element_of_list(a):
for i in a:
print i
Run Code Online (Sandbox Code Playgroud)
好的,你有完整的扫描,所以复杂度是 O(n)
等等
我正在寻找一个可以计算函数Big 0的java算法分析工具.理想我想将其作为构建过程的一部分,与我的其他代码度量工具一起使用.即使在谷歌搜索后,我也无法找到任何商业工具的开源.任何建议都会受到欢迎
谢谢
我想知道是否可以"编写程序或算法 " 来查找任何给定程序的时间复杂度作为输入.
输入:任何程序(P)[任何语言或特定语言]
输出:该程序的时间复杂度(P).
有没有先前尝试编写这样的程序?有没有可用于此目的的算法?
如果是这样,请提供必要的链接,参考或任何可能的指导.
algorithm ×4
big-o ×3
metrics ×2
python ×2
code-metrics ×1
java ×1
numpy ×1
pandas ×1
refactoring ×1