2024-09-29 06:22:56 发布
网友
这可能非常明显,但只是想确保我理解runsnakerun中的列。在
名称,调用,RCalls,Local,/Call,Cum,/Call,文件,行,目录
这里有一些我想我能理解的
Name—被调用函数的名称
我觉得不敢大胆猜测的是其余的:
谢谢
最好的方法是用一个示例来说明,假设您有以下程序(存储在简介.py,但为了清晰起见,将其分成几部分):
def topfunction(): tinyfunction() for i in range(100000): manytinyfunction()
调用很简单这个函数被直接调用了多少次。当然,当您选择左侧的项时,这些数字将发生变化,反映所选函数调用函数的次数。manytinyfunction将被调用100000次,因此调用次数为100000次。tinyfunction将被调用一次,因此它的调用将为1。在
manytinyfunction
tinyfunction
r调用类似,但也包括执行调用时发生的调用。请注意,recursive调用的值仅为10,但rcalls为1010(定义如下,但如果参数为n,则调用自身n次)
recursive
alllocal() allcumulative()
类似地,local包括在函数本身上花费的所有时间,不包括对其他函数的调用。这里alllocal在这里有一个很大的值,但是{}在这里没有任何值,因为它把它的工作放在subfunction上。在
alllocal
subfunction
def tinyfunction(): pass def manytinyfunction(): pass
local旁边的/调用只会在每次调用中分解上面的本地值,因此manytinyfunction总体上有一点时间,但是local/Call中的一个非常小的数字,因为每个调用都非常便宜。在
def alllocal(): for i in range(1000): for j in range(1000): for k in range(1000): pass
对于alllocal,无论是本地调用还是累积调用,都将是巨大的,因为这个函数非常昂贵,而且所有的开销都是本地的。在
def allcumulative(): for i in range(1000): subfunction() def subfunction(): for j in range(1000): for k in range(1000): pass
cumulative旁边的/调用与local的/Call相同,只是与cumulative本身一样,它包含从函数本身发出的所有调用的全部开销。因此,allcumulative的本地/呼叫号码很小,alllocal的本地/呼叫号码却很大。对于累积/调用则不是这样,这两种情况下都是相同的。在
allcumulative
def recursive(n): if n > 0: return recursive(n-1) else: return 0
提供recursive的定义是为了完整性
if __name__=="__main__": topfunction()
分析并运行runsnake之后:
python -m cProfile -o profileme.out profileme.py runsnake profileme.out
因此,请注意,alllocal对于局部和累积都有很大的值,其中asallcumulative是截然不同的。请注意,recursive在这两列中是相同的,对您自己的调用都是计数的。在
底部的调用者按钮可让您了解所选函数正在调用的其他函数,而调用者可让您确定谁在调用所选函数。在
我的理解是:
RCalls
Local
/Call
Cum
最好的方法是用一个示例来说明,假设您有以下程序(存储在简介.py,但为了清晰起见,将其分成几部分):
调用很简单这个函数被直接调用了多少次。当然,当您选择左侧的项时,这些数字将发生变化,反映所选函数调用函数的次数。
^{pr2}$manytinyfunction
将被调用100000次,因此调用次数为100000次。tinyfunction
将被调用一次,因此它的调用将为1。在r调用类似,但也包括执行调用时发生的调用。请注意,
recursive
调用的值仅为10,但rcalls为1010(定义如下,但如果参数为n,则调用自身n次)类似地,local包括在函数本身上花费的所有时间,不包括对其他函数的调用。这里}在这里没有任何值,因为它把它的工作放在
alllocal
在这里有一个很大的值,但是{subfunction
上。在local旁边的/调用只会在每次调用中分解上面的本地值,因此
manytinyfunction
总体上有一点时间,但是local/Call中的一个非常小的数字,因为每个调用都非常便宜。在对于
alllocal
,无论是本地调用还是累积调用,都将是巨大的,因为这个函数非常昂贵,而且所有的开销都是本地的。在cumulative旁边的/调用与local的/Call相同,只是与cumulative本身一样,它包含从函数本身发出的所有调用的全部开销。因此,
allcumulative
的本地/呼叫号码很小,alllocal
的本地/呼叫号码却很大。对于累积/调用则不是这样,这两种情况下都是相同的。在提供
recursive
的定义是为了完整性分析并运行runsnake之后:
因此,请注意,
alllocal
对于局部和累积都有很大的值,其中asallcumulative
是截然不同的。请注意,recursive
在这两列中是相同的,对您自己的调用都是计数的。在底部的调用者按钮可让您了解所选函数正在调用的其他函数,而调用者可让您确定谁在调用所选函数。在
我的理解是:
RCalls
递归调用数Local
本地执行所花费的总时间(不调用其他方法)/Call
每次呼叫的本地时间Cum
总累积时间/Call
每次呼叫的累计时间相关问题 更多 >
编程相关推荐