标签: benchmarking

每次迭代更改Apache Bench使用的POST数据

我正在使用ab来进行一些负载测试,并且提供的查询字符串(或POST)参数在请求之间发生变化非常重要.

即我需要向URL发出请求,例如:

http://127.0.0.1:9080/meth?param=0
http://127.0.0.1:9080/meth?param=1
http://127.0.0.1:9080/meth?param=2
...
Run Code Online (Sandbox Code Playgroud)

适当地行使申请.

ab似乎只在启动时读取提供的POST数据文件一次,因此在测试运行期间更改其内容不是一种选择.

有什么建议?

apache performance benchmarking apachebench

15
推荐指数
1
解决办法
1万
查看次数

OpenJDK JMH"得分错误"究竟意味着什么?

我正在使用http://openjdk.java.net/projects/code-tools/jmh/进行基准测试,我得到的结果如下:

__PRE__

"得分误差"一栏究竟是什么意思以及如何解释它?

performance benchmarking microbenchmark jmh

15
推荐指数
1
解决办法
3493
查看次数

为什么尾递归优化比Python中的正常递归更快?

虽然我知道尾部递归优化是非Pythonic的,但我想到了一个快速入侵这里的问题,一旦我准备发布就删除了.

由于1000个堆栈限制,深度递归算法在Python中不可用.但有时通过解决方案对初步想法很有帮助.由于函数是Python中的第一类,我使用返回有效函数和下一个值.然后循环调用该进程,直到完成单个调用.我敢肯定这不是新的.

我发现有趣的是,我期望来回传递函数的额外开销使得这比正常递归慢.在我的粗略测试期间,我发现它需要30-50%的正常递归时间.(允许LONG递归的额外好处.)

这是我正在运行的代码:

from contextlib import contextmanager
import time

# Timing code from StackOverflow most likely.
@contextmanager
def time_block(label):
    start = time.clock()
    try:
        yield
    finally:
        end = time.clock()
        print ('{} : {}'.format(label, end - start))


# Purely Recursive Function
def find_zero(num):
    if num == 0:
        return num
    return find_zero(num - 1)


# Function that returns tuple of [method], [call value]
def find_zero_tail(num):
    if num == 0:
        return None, num
    return find_zero_tail, num - 1


# Iterative recurser
def tail_optimize(method, …
Run Code Online (Sandbox Code Playgroud)

python recursion performance benchmarking tail-recursion

15
推荐指数
1
解决办法
2053
查看次数

使用googletest进行基准测试?

背景(如果不感兴趣,请跳至下面的问题)

我有一个运行三种状态的模拟器:

  1. 单线程启动(I/O ok)
  2. 多线程内存CPU绑定仿真阶段(I/O不行)
  3. 后仿真,后连接单线程阶段(I/O ok)

有没有搞错! 在标准测试期间,CPU使用率从100%下降到20%,总运行时间比正常时间长30倍(130秒与4.2秒).

Callgrind没有发现任何可疑的事情时,我的头嗡嗡作响,因为我正在回到最后一次提交的悬崖上,失去了所有的错误修复.

气馁,我在跑步期间走进服务器机房,注意到讨厌的磨音,后来验证是由于/ proc/PID/fd中的 Mysql套接字写入造成的!事实证明,第2阶段深层的几层Mysql代码导致了问题.

得到教训

  1. 意外I/O对于实时应用程序可能是致命的
  2. 单元测试还不够:我也需要基准测试

修复 我将在ReadAllowed()和WriteAllowed()上引入线程本地存储IOSentinels和asserts(),以确保Stage 2线程永远不会执行任何IO.

任何人都有幸与googletest附加/编写基准测试框架?

不幸的是,这次我的所有googletests都通过了.如果我稍稍离开并在没有注意到运行时间的情况下回来,这将是一个灾难性的提交,并且可能更难修复.

如果运行时间超过上次运行时的2或3倍,我希望googletest失败:这最后一部分很棘手,因为对于非常快速的运行,系统状态可能导致某些事情需要两倍的时间但仍然可以.但是对于长时间的模拟运行/测试,我不希望运行时间变化很大(> 50%会不常见).

我对这里的建议持开放态度,但是对于自动化测试进行低维护检查会很好,所以即使所有输出看起来都没问题,系统突然变慢也很明显.

c++ benchmarking googletest

14
推荐指数
2
解决办法
9614
查看次数

为什么python在Windows上这么慢?

我今天学到了关于pystones的知识,所以我决定看看我的各种环境是什么样的.我在我的笔记本电脑上运行了pystones,它在裸机上运行窗口并得到了这些结果

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from test import pystone
>>> for i in range(0,10):
...   pystone.pystones()
...
(1.636334799754252, 30556.094026423627)
(2.1157907919853756, 23631.82607155689)
(2.5324817108003685, 19743.479207278437)
(2.541626695533182, 19672.4405231788)
(2.536022267835051, 19715.915208695682)
(2.540327088340973, 19682.50475676099)
(2.544761766911506, 19648.20465716261)
(2.540296805235016, 19682.739393664764)
(2.533851636391205, 19732.804905346253)
(2.536483186973612, 19712.3325148696)
Run Code Online (Sandbox Code Playgroud)

然后我在我们的一些Linux VM上运行它,性能提高了2.7-3.4倍.所以我在我的笔记本电脑上启动了我的vmware Linux VM并重新进行了相同的测试并获得了以下结果:

Python 2.7.2+ (default, Oct  4 2011, 20:03:08) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more …
Run Code Online (Sandbox Code Playgroud)

python benchmarking

14
推荐指数
2
解决办法
1万
查看次数

如何在不缓存的情况下测量文件读取速度?

我的java程序花了大部分时间来阅读一些文件,我想优化它,例如,通过使用并发,预取,内存映射文件或其他.

没有基准测试的优化是无意义的,所以我进行了基准测试.但是,在基准测试期间,整个文件内容都缓存在RAM中,与实际运行时不同.因此,基准测试的运行时间要小得多,而且很可能与现实无关.

我需要以某种方式告诉操作系统(Linux)不要缓存文件内容,或者更好地在每次基准测试运行之前清除缓存.或者可能消耗大部分可用的RAM(32 GB),因此只有一小部分文件内容适合.如何操作?

我正在使用卡尺进行基准测试,但在这种情况下我认为没必要(它绝不是微基准测试),我不确定这是个好主意.

java benchmarking caching disk-io caliper

14
推荐指数
1
解决办法
1987
查看次数

以纳秒为单位获取当地时间

可能重复:
C++定时器功能,以纳秒为单位提供时间

我需要以纳秒分辨率来测量函数执行的持续时间.可能吗?我们普通的计算机硬件和软件能够给出如此精确的时间吗?如果是,如何使用c ++实现这一目标?是否可以使用Boost库?

c++ time benchmarking boost

14
推荐指数
1
解决办法
6万
查看次数

在文件中打印单行的最快方法

我必须从一个大文件(1500000行)中获取一个特定的行,在多个文件的循环中多次,我问自己什么是最好的选择(在性能方面).有很多方法可以做到这一点,我男子气概使用这些2

cat ${file} | head -1
Run Code Online (Sandbox Code Playgroud)

要么

cat ${file} | sed -n '1p'
Run Code Online (Sandbox Code Playgroud)

我找不到这个问题的答案,他们只获取第一行或两者之一(或两者)首先打开整个文件,然后获取第1行?

bash benchmarking sed head cat

14
推荐指数
3
解决办法
3万
查看次数

Hazelcast与Ignite基准测试

我使用数据网格作为我的主要"数据库".我注意到Hazelcast和Ignite查询性能之间存在巨大差异.我通过适当的自定义序列化和索引优化了我的数据网格使用情况,但差异仍然是明显的IMO.

由于没有人在这里问过,我将回答我自己的问题以供将来参考.这不是一个抽象(学习)练习,而是一个真实的基准测试,用于模拟大型SaaS系统中的数据网格使用 - 主要用于显示已排序和过滤的分页列表.我主要想知道,与原始无框架Hazelcast和Ignite使用相比,我的通用JDBC-ish数据网格访问层增加了多少开销.但由于我比较苹果和苹果,所以这里是基准.

benchmarking hazelcast ignite

14
推荐指数
2
解决办法
2万
查看次数

BenchmarkDotNet InProcessEmitToolchain 完整示例

我第一次关注 BenchmarkDotNet 和一般基准测试。由于我们工作笔记本电脑上的防病毒限制,我似乎无法使用普通的 BenchmarkRunner 运行基准测试,因此我尝试使用 InProcessEmitToolchain,如此处所述然而,在这些示例和此处列出的示例中,我看不到真正会触发基准测试的应用程序的入口点,并且我在阅读文档时没有得到任何有用的信息。

谁能向我指出如何使用 InProcessEmitToolchain 和/或作业的完整示例,以解释如何将作业与应用程序入口点结合使用来运行测试?

c# benchmarking benchmarkdotnet

14
推荐指数
2
解决办法
4712
查看次数