使用MCMC进行基准测试分析
benchmcmc的Python项目详细描述
benchmcc-使用MCMC进行基准分析
安装
安装一如既往
pip install benchmcmc
快速启动
快速入门:
^{pr2}$第一个命令生成200个合成数据点并将它们放入
bench.txt
,第二个命令对数据运行benchmcmc
,
显示MCMC的trace plot。在
简介
这个包允许您进行一系列基准数据分析 在某种程度上表现出了变化。在
假设您对每个提交运行基准测试
(例如,循环git-rev-list
),
你看到你的表现数据
是(例如每秒请求数或秒数,或其他度量)
具体如下:
13.64
12.82
11.69
15.12
12.30
18.46
13.51
14.33
13.84
12.77
... (180 rows omitted)
10.93
11.02
12.45
11.78
12.12
13.51
10.66
10.18
10.81
12.19
在这个数据中,一开始似乎以13+ε为中心, 就这样结束了 以12+ε为中心,或可视化:
在第100点之前,数值似乎略有下降,但是 要准确地确定变化发生在哪里并不容易。在
假设你想知道一开始的表演 最后很可能来自两个不同的分布,如果是这样的话, 其中开关点在哪里。在
分析
在数据上运行benchmcmc
得到了上面的图,它表明
很可能是从13.5到12.25
第69或75个数据点。在
这有助于您确定性能更改可能发生的时间。在
使用
$ benchmcmc bench.txt --draws 1000 --tune 1000 --cores 4 --target-accept 0.8
可用的选项是上述示例和
所有的东西都被取走和输入
^{
draws
-要绘制的样本数。默认值为1000。号码 默认情况下,将丢弃已优化的采样数。在tune
-要优化的迭代次数,默认值为1000。采样器 在调谐过程中调整步长、刻度或类似值。调谐 除图纸中指定的数量外,还将抽取样本 参数,将被丢弃。在cores
-要并行运行的链的数目。如果None
,则设置 系统中CPU的数量,但最多4个。在target_accept
:float-in[0,1]-步长被调整为 我们估计这个接受率。更高的值,如0.9或0.95 通常对有问题的后人更有效。在
生成合成数据
您可以运行benchmcmc --generate
来生成合成基准
数据。在
$ benchmcmc --generate 100153100143[--beta] > benchmarkfile.txt
这将生成200个样本,100个来自N(mu=15, sigma=3)
,然后是100个
来自N(mu=14, sigma=3)
。在
如果使用--beta
,则使用
下界,尤其是mu
的下限值。在
在历史上运行脚本
假设您想在中的脚本上运行python script.py
你的圣诞树。在
LOGFILE=/tmp/timescript echo"" > $LOGFILEfor commit in $(git rev-list master)do git checkout $commitprintf"%s,""`(git rev-parse --short HEAD)`" >> $LOGFILE /usr/bin/time -a -o $LOGFILE --format=%e python script.py done tac $LOGFILE
在存储库中运行时,它将以格式输出时间数据
commit,time
以下是输出示例:
484fde8,0.04
58a1cdb,0.04
d26b797,0.04
81f4b9a,0.04
3ae1e11,0.04
7689ca2,0.04
8c76b29,0.04
43db50c,0.04
b34b146,0.04
4c56a54,0.04
9c08050,0.07
b22278d,0.07
7a9c111,0.07
065b6a5,0.07
6cc7cdd,0.07
ec7f042,0.07
b3ba887,0.08
a32ce81,0.07
9136914,0.07
b456714,0.07
504cf73,0.07
8002774,0.07
e1f5f9f,0.09
例如,您可以创建一个脚本gitrun
,如下所示:
#!/usr/bin/bashGITRUN_EXEC=$1shiftGITRUN_ARGS=$@for commit in $(git rev-list master)do git checkout --quiet $commitprintf"%s,""`(git rev-parse --short HEAD)`" sh -c "$GITRUN_EXEC$GITRUN_ARGS"done
- 项目
标签: