标签: benchmarking

效率,基准测试,速度测试,性能

我正在尝试编写一个我试图测量其效率的脚本.我有一些问题:-

  1. 对于小型应用程序,是否需要这种分析?还是我变得偏执?(假设大多数代码效率很高/没有无限循环)
  2. 反对我应该对此进行基准测试?我应该比较什么?
  3. 以下是我从ab获得的效率输出.这样太过分了吗?我是否正朝着设计此应用程序的错误方向前进?我应该注意哪些警告信号?
abs -n10000 -c100 http://localhost/testapp

This is ApacheBench, Version 2.3 
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        Apache/2.2.10
Server Hostname:        localhost
Server Port:            80

Document Path:          /testapp
Document Length:        525 …

php performance benchmarking profiling

3
推荐指数
1
解决办法
1002
查看次数

Java正则表达式性能

我正在尝试使用Java解析带有正则表达式的链接.

但我认为它变得太慢了.例如,要从以下位置提取所有链接:

......花了34642毫秒(34秒!!!)

这是正则表达式:

private final String regexp = "<a.*?\\shref\\s*=\\s*([\\\"\\']*)(.*?)([\\\"\\'\\s].*?>|>)";
Run Code Online (Sandbox Code Playgroud)

模式的标志:

private static final int flags = Pattern.CASE_INSENSITIVE | Pattern.DOTALL |Pattern.MULTILINE | Pattern.UNICODE_CASE | Pattern.CANON_EQ;
Run Code Online (Sandbox Code Playgroud)

代码可能是这样的:

private void processURL(URL url){
    URLConnection connection;
    Pattern pattern = Pattern.compile(regexp, flags);
    try {
        connection = url.openConnection();
        InputStream in = connection.getInputStream();
        BufferedReader bf = new BufferedReader(new InputStreamReader(in));
        String html = new String();
        String line = bf.readLine();            
        while(line!=null){
            html += line;
            line = bf.readLine();
        }
        bf.close();
        Matcher matcher = pattern.matcher(html);
        while (matcher.find()) {
            System.out.println(matcher.group(2));
        } …
Run Code Online (Sandbox Code Playgroud)

java regex performance benchmarking profiling

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

你如何快速基准脚本

我见过很多博客,其中作者讨论了快速基准测试,例如Antonio Cangiano"凌晨3点在一起投掷的Ruby 1.9.0 v Python 2.5.1 ".

有没有一种简单的方法可以将脚本计时到毫秒级,就像我不知道的那样?他可能使用OS X的内置函数或单个库吗?Python有一个标准的lib吗?

如果你只是采取阻力最小的路径并在凌晨3点把它扔到一起,你会怎么做?

ruby python benchmarking

3
推荐指数
1
解决办法
343
查看次数

为什么`注入'非常慢?

这是基准

require 'benchmark'

# create random array
arr = 40000.times.map { rand(100000).to_s }

r1 = ''
r2 = ''
r3 = ''

Benchmark.bm do |x|
    x.report {
        r1 = (arr.map { |s|
            "[#{s}]"
        }).join
    }

    x.report {
        r2 = arr.inject('') { |memo, s|
            memo + "[#{s}]"
        }
    }

    x.report {
        r3 = ''
        arr.each { |s|
            r3 << "[#{s}]"
        }
    }
end

# confirm result is same
puts r1 == r2
puts r2 == r3
Run Code Online (Sandbox Code Playgroud)

这是结果

       user     system      total        real …
Run Code Online (Sandbox Code Playgroud)

ruby benchmarking

3
推荐指数
1
解决办法
395
查看次数

如何提高Redis服务器的CPU使用率?

我的目标是在Redis服务器上实现大约80%的CPU使用率,这可以使我们的后端服务器设计受益.

使用Redis本身的基准测试时,很容易达到大约100%的CPU使用率:

    $ redis-benchmark -h 192.168.1.6 -n 1000000 -c 50
Run Code Online (Sandbox Code Playgroud)

在此基准测试中,我们分配了50个客户端,以便在我们的redis服务器上推送1,000,000个请求(192.168.1.6)

但是在使用其他一些客户端工具(例如redis-luawebdis)时,CPU使用率最低不到60%.

我在webdisreids -lua中浏览了一些代码.webdis依赖于hired, redis-lua在Lua中实现,它基于socket(lua-socket).这些油脂是否会影响检测结果?

我还在redis-benchmark中浏览了一些代码,这是基准测试的主要工作redis-benchmark,似乎redis-benchmark使用了Redis中的代码,而我的测试客户端(webdisredis-lua)则没有.

目前我的客户有两个选择,使用redis-lua或者像webdis一样,但是这两个没有很好地利用Redis(不到60%),还有更多的选择吗?或者除了redis-benchmark本身之外如何在redis-server上做好用 ?

benchmarking lua redis

3
推荐指数
1
解决办法
4724
查看次数

我应该使用'-server'选项运行JMH基准测试

我正在使用JJH,一个OpenJDK微基准测试工具.构建过程创建microbenchmarks.jar我调用java -jar并传递jar名称和JMH参数.

我想我们应该选择运行基准-server,为什么?

换句话说,我应该运行我的基准:

java -server -jar microbenchmarks.jar ...(jmh args)
Run Code Online (Sandbox Code Playgroud)

java benchmarking jmh

3
推荐指数
1
解决办法
430
查看次数

Java Microbenchmarking Harness vs System.getNanotime()

问题1:为什么JMH比简单更好System.getNanotime()

问题2:从结果(看看benchmarking results部分)我可以得出什么结果validateLongKeyBinary比64%更快validateLongKeyAscii

示例(代码):

import net.spy.memcached.util.StringUtils;
import org.openjdk.jmh.annotations.GenerateMicroBenchmark;

public class KeyBench {

private static final String LONG_KEY = "thisIsAFunkyKeyWith_underscores_AndAlso334" +
            "3252545345NumberslthisIsAFunkyKeyWith_underscores_AndAlso3343252545345Numbe" +
            "rslthisIsAFunkyKeyWith_underscores_AndAlso3343252545345NumberslthisIsAFunkyK" +
            "eyWith_underscores_AndAlso3343252545345Numbersl";


    @GenerateMicroBenchmark
    public void validateLongKeyBinary() {
        StringUtils.validateKey(LONG_KEY, true);
    }

    @GenerateMicroBenchmark
    public void validateLongKeyAscii() {
        StringUtils.validateKey(LONG_KEY, false);
    }
}
Run Code Online (Sandbox Code Playgroud)

基准测试结果

# Running: benchmarks.KeyBench.validateLongKeyAscii

Result : 393,667 ±(95%) 13,985 ±(99%) 20,094 ops/ms
  Statistics: (min, avg, max) = (357,445, 393,667, 413,004), stdev = 19,552
  Confidence intervals: 95% …
Run Code Online (Sandbox Code Playgroud)

java benchmarking microbenchmark jmh

3
推荐指数
1
解决办法
864
查看次数

有没有一种方法可以使用wrk将参数传递给GET请求?

我需要对将参数作为输入的REST API进行基准测试。我想知道是否有一种方法可以使用wrk。现在我看不到这样的选择:

user@Ubuntu-K56CA:~/wrk$ ./wrk
Usage: wrk <options> <url>                            
  Options:                                            
    -c, --connections <N>  Connections to keep open   
    -d, --duration    <T>  Duration of test           
    -t, --threads     <N>  Number of threads to use   

    -s, --script      <S>  Load Lua script file       
    -H, --header      <H>  Add header to request      
        --latency          Print latency statistics   
        --timeout     <T>  Socket/request timeout     
    -v, --version          Print version details
Run Code Online (Sandbox Code Playgroud)

当我查看此文件时:https : //github.com/wg/wrk/blob/master/src/wrk.lua

我看不到params在任何地方使用过。同样paramswrk回购中grepping并没有产生任何有用的信息。

我想念什么吗?

rest benchmarking wrk

3
推荐指数
1
解决办法
2864
查看次数

OpenAI Gym和Gazebo测试机器人技术的RL算法?

如果我想研究机器人技术RL算法,应该如何使用Gazebo OpenAI Gym进行测试,训练和基准测试?我应该从OpenAI Gym入手,然后将具有良好分数的算法带入Gazebo环境中以应对现实情况吗?

benchmarking robotics reinforcement-learning ros openai-gym

3
推荐指数
1
解决办法
928
查看次数

为集成测试和基准测试提供共享实用程序功能的惯用方法是什么?

我有Rust项目,包括集成测试(在/testsdir中)和基准测试(在/benchesdir中).在测试和长凳中我需要一些实用功能,但它们与我的箱子本身无关,所以我不能把它们放在/utils目录中.

处理这种情况的惯用方法是什么?

testing benchmarking rust rust-cargo

3
推荐指数
2
解决办法
884
查看次数