一个简单的基准测试工具

neurtu的Python项目详细描述


pypirdfd

travisappveyorcodecov

简单的性能测量工具

neurtu是一个python包,为多指标基准测试提供了一个通用接口 (包括时间和记忆测量)。它可以用来估计时间 大熊猫集成算法的空间复杂度 允许对结果进行快速分析和可视化。

neurtu在巴斯克语中是“测量/评估”的意思。

有关详细信息,请参见documentation

安装

Neurtu需要Python2.7或3.4+,它可以安装,

pip install neurtu

pandas >=0.20是可选(但强烈建议)依赖项。

快速启动

为了说明neurtu的用法,will将在numpy中对数组排序进行基准测试。首先,我们会 壳体生成器,

importnumpyasnpimportneurtudefcases()rng=np.random.RandomState(42)forNin[1000,10000,100000]:X=rng.rand(N)tags={'N':N}yieldneurtu.delayed(X,tags=tags).sort()

这将产生一系列延迟的计算,每个计算都标记有定义单个运行的参数。

我们可以使用,

>>>df=neurtu.timeit(cases())>>>print(df)wall_timeN10000.000014100000.0001341000000.001474

它将在内部使用timeit模块,该模块具有足够数量的求值来处理计时器精度 限制(类似于ipython的%timeit)。它还将显示长时间运行基准的进度条, 并以pandas.DataFrame形式返回结果(如果安装了pandas)。

默认情况下,所有计算都使用repeat=1运行。如果需要更多的统计置信度,则此值可以 增加,

>>>neurtu.timeit(cases(),repeat=3)wall_timemeanmaxstdN10000.0000120.0000140.000002100000.0001160.0001490.0000291000000.0013230.0017140.000339

在这种情况下,我们将得到一个框架 pandas.MultiIndex用于 列,其中第一个级别表示度量名称(wall_time),第二个级别表示聚合方法。 默认情况下,neurtu.timeit使用aggregate=['mean', 'max', 'std']方法调用,如支持的那样 通过pandas aggregation API。要禁用, 聚合并获取单个运行的计时,使用aggregate=False。 有关详细信息,请参见neurtu.timeit documentation

要评估峰值内存使用情况,可以使用具有相同api的neurtu.memit函数,

>>>neurtu.memit(cases(),repeat=3)peak_memorymeanmaxstdN100000.00.00.01000000.00.00.010000000.00.00.0

一般来说,neurtu.Benchmark支持大量的评估指标,

>>>bench=neurtu.Benchmark(wall_time=True,cpu_time=True,peak_memory=True)>>>bench(cases())cpu_timepeak_memorywall_timeN100000.0001000.00.0001421000000.0011490.00.00168010000000.0136770.00.018347

包括psutil process metrics

有关更多信息,请参见documentationexamples

许可证

Neurtu是根据3条BSD许可证发布的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Intellij新项目JDK不可用   JAVA静态块执行了多少次?   java通过JCheckBox更改文本字段输入的字体颜色   java在星期几文本字段中输入值   java RichFaces 4.2日历。如何通过JavaScript设置日历的输入字段?   java在javafx中注册鼠标处理程序,但处理程序不是内联的   java将jchararray分配给常量unsigned char   在安卓4.4中注意到java奇怪的圆形浮动动作按钮吗?   java中用于解决8个难题的合适的树类是什么   为什么Java在我的Linux服务器上使用了如此多的内存?   java从多个推荐列表中提取顶级推荐   “426写入网络流失败。”尝试使用Java的URL类连接到FTP站点时收到   java如何在没有Gradle的情况下使用IntelliJ打开项目?   java如何在线程完成后使For循环继续?   java使用定制jackson ObjectMapper定制Spring引导序列化过程   java NativeActivity不会显示在屏幕上   如何使用Java中的EditorConfig在IntelliJ IDEA中关闭rightparen自己的行?   java从字符串中删除字母数字单词   Intellij IDEA 13.1中的maven Java编译错误