测试非确定值生成器的分布统计和计时器
MonkeyScope的Python项目详细描述
Monkeyscope测试版
非确定值生成器的分配计时器
姊妹项目:
- fortuna:用来生成自定义随机值生成器的抽象集合。https://pypi.org/project/Fortuna/
- pyewacke:完全替换python3随机模块。https://pypi.org/project/Pyewacket/ < LIG:RNG:Python 3API用于C++随机库。https://pypi.org/project/RNG/
支持这些和其他随机项目:https://www.patreon.com/brokencode
快速安装
$ pip install MonkeyScope
$ python3
>>> import MonkeyScope ...
安装可能需要以下各项:
- Python3.7或更高版本。
- cython:
pip install Cython
- python3开发环境、设置工具等。
- 现代C++ 17编译器和标准库。
Monkeyscope规格
MonkeyScope.distribution_timer(func: staticmethod, *args, **kwargs) -> None
- 用于统计分析非确定性输出的记录器。
- @param func::要分析的函数、方法或lambda。
func(*args, **kwargs)
- @可选_kw num_cycles=10000::用于分析的样本总数。
- @可选的_kw post_processor=none::用于将一组大数据缩放到一组较小的分组中,以便更好地显示数据,特别是对浮点分布有用。对于quick_test()中的许多函数,使用math.floor(),对于其他函数,使用round()更为合适。对于更复杂的后处理-lambdas工作得很好。后处理只影响分布,统计和性能结果不受影响。
MonkeyScope.distribution(func: staticmethod, *args, **kwargs) -> None
- 统计和分布。
MonkeyScope.timer(func: staticmethod, *args, **kwargs) -> None
- 只是功能计时器。
Monkeyscope终端示例
$ python3
Python 3.7.3
>>> import MonkeyScope
>>> import random
>>> MonkeyScope.timer(random.randrange, -10000, 10000, 2)
Typical Timing: 1594 ± 34 ns
monkeyscope脚本示例
importMonkeyScopeimportrandomMonkeyScope.distribution_timer(random.randint,1,10)MonkeyScope.distribution_timer(random.randrange,1,10)MonkeyScope.distribution_timer(random.randrange,1,10,2)
典型脚本输出
Output Analysis: Random.randint(1, 10)
Typical Timing: 1375 ± 32 ns
Statistics of 1024 samples:
Minimum: 1
Median: 6
Maximum: 10
Mean: 5.5185546875
Std Deviation: 2.8455943311882343
Distribution of 102400 samples:
1: 10.1171875%
2: 9.943359375%
3: 9.9541015625%
4: 9.8916015625%
5: 10.1318359375%
6: 10.0361328125%
7: 9.8681640625%
8: 10.16796875%
9: 9.9052734375%
10: 9.984375%
Output Analysis: Random.randrange(1, 10)
Typical Timing: 1219 ± 35 ns
Statistics of 1024 samples:
Minimum: 1
Median: 5
Maximum: 9
Mean: 4.9609375
Std Deviation: 2.531992268646342
Distribution of 102400 samples:
1: 11.0205078125%
2: 11.2080078125%
3: 11.16015625%
4: 11.08203125%
5: 11.1484375%
6: 11.0791015625%
7: 11.1923828125%
8: 10.9375%
9: 11.171875%
Output Analysis: Random.randrange(1, 10, 2)
Typical Timing: 1532 ± 36 ns
Statistics of 1024 samples:
Minimum: 1
Median: 5
Maximum: 9
Mean: 5.029296875
Std Deviation: 2.8123316447928097
Distribution of 102400 samples:
1: 19.984375%
3: 19.931640625%
5: 20.1552734375%
7: 19.93359375%
9: 19.9951171875%
待办事项列表:
- 改进文档
- 捏造例子
- 导出测试
- 重构初始
开发日志:
蒙基镜β0.1.4
- 小错误修复
蒙基镜β0.1.3
- 持续发展
蒙基镜β0.1.2
- 重命名为monkeyscope
MonkeyTimerβ0.0.2
- 已更改为C++编译器
MonkeyTimerβ0.0.1
- 初始项目设置