对任何命令的CPU、内存、磁盘使用率和运行时进行快速而简单的基准测试。
cmdbench的Python项目详细描述
CMDBench公司
对于任何命令的CPU、内存和磁盘使用情况,这是一个快速而简单的基准测试工具。
CLI和库功能都提供了。在
注意:这个库是为^{str1}$Linux操作系统编写的,经过严格测试和维护。但是Windows和macOS也受支持。创建一个问题,以防遇到问题。在
安装
要从该github存储库安装库,请在终端中执行以下命令:
pip install cmdbench
Python兼容性:2.7或>;=3.4
目录
快速启动:命令行界面
您可以使用python包提供的CLI对任何命令进行基准测试。
在下面的演示中,命令node test.js
(稍作修改的test.js)将进行10次基准测试,打印平均资源,并将命令的cpu和内存使用情况的绘图保存到文件plot.png
。在
演示的输出绘图文件plot.png
如下所示:
快速入门:库
方法一:更简单
您只需使用benchmark_command
函数对命令进行基准测试。
对命令stress --cpu 10 --timeout 5
进行20次迭代的基准测试。但只打印基准结果中的第一个。在
方法二:更具可定制性
您还可以创建一个或多个BenchmarkResults对象,并随时间将基准结果添加到这些对象。
因此,当您根本无法执行时,您不会被迫连续执行命令的基准测试。
当您尝试对需要以特定顺序连续执行或相互依赖的多个命令进行基准测试时,可能会很有帮助。在
>>>fromcmdbenchimportbenchmark_command,BenchmarkResults>>>benchmark_results=BenchmarkResults()>>>for_inrange(20):...new_benchmark_result=cmdbench.benchmark_command("stress --cpu 10 --timeout 5")...benchmark_results.add_benchmark_result(new_benchmark_result)...# The for loop above is equivalent to: benchmark_results = cmdbench.benchmark_command("stress --cpu 10 --timeout 5", iterations_num = 20)>>>benchmark_results.get_averages(){'cpu':{'system_time':0.012500000000000002,'total_time':48.468,'user_time':48.45550000000001,},'disk':{'read_bytes':0.0,'read_chars':5124.0,'total_bytes':0.0,'total_chars':5232.4,'write_bytes':0.0,'write_chars':108.4,},'memory':{'max':2094080.0,'max_perprocess':1020928.0,},'process':{'execution_time':5.0,'stderr_data':None,'stdout_data':None,},'time_series':{'cpu_percentages':array([0.,476.03157895,794.66363636,...,976.05555556,188.97777778,0.])'memory_bytes':array([2093924.84848485,2096074.10526316,2099013.81818182,...,2090552.88888889,1256561.77777778,810188.8])'sample_milliseconds':array([11.42424242,21.73684211,30.90909091,...,4986.44444444,4995.05555556,5000.2])},}
使用IPython笔记本
有关如何使用库和资源图的更全面的演示,请查看提供的ipython notebook。在
文件
benchmark_命令(命令:str,iterations_num=1,raw_data=False)
- 论据
- 命令:要处理的目标命令。在
- 迭代次数:衡量程序资源的次数。在
- 原始数据:是否显示来自不同来源的所有不同信息,如psutil和GNU Time(如果可用)。在
- 返回包含相关结果的BenchmarkResults对象。在
benchmark_命令生成器(命令:str,interactions_num=1,raw_data=False)
- 参数:与benchmark\u命令相同
- 返回一个generator对象,该对象允许您在每次基准测试迭代完成后获得基准测试结果(对于监视进度和在移动中接收基准数据非常有用)。在
基准测试结果:类
- 方法:
get_first_iteration()
返回基准结果对象中的第一个迭代结果。在get_iterations()
返回基准结果对象中所有迭代的结果。在get_values_per_attribute()
返回包含不同迭代中每种类型值的列表的对象。在get_averages()
返回不同迭代中所有类型值的平均值。同时计算时间序列数据的平均值。在get_statistics()
对于不同迭代的所有类型的值返回不同的统计信息(mean、stdev、min、max)。在get_resources_plot(width: int, height: int)
返回matplotlib figure对象的CPU和目标进程的内存使用情况,这些对象可以在ipython笔记本中查看或保存到图像文件中。在add_benchmark_result(adding_result: BenchmarkResults)
将另一个BenchmarkResults对象的BenchmarkResults迭代的数据添加到当前对象。在
本chmarkDict:类(defaultdict)
用于表示迭代数据的自定义内部字典类。
这个类中的对象内部的数据可以通过点符号obj.key
和键访问obj["key"]
来访问
注释
窗口
在windows上进行基准测试时,需要将主代码包装在if __name__ == '__main__':
语句周围。在
马科斯
MacOS不允许收集进程特定的磁盘使用情况信息,因此在执行基准测试时,不会在MacOS上报告磁盘使用情况。在
- 项目
标签: