标签: benchmarking

基准测试时,是什么导致CPU时间和"实时流逝"之间的延迟?

我正在使用内置的基准测试模块进行一些快速而肮脏的测试.它给了我:

  • CPU时间
  • 系统CPU时间(实际上我从来没有得到任何结果与我正在运行的代码)
  • 用户和系统CPU时间的总和(总是与我的CPU时间相同)
  • 经过的实时

我甚至不知道我需要所有这些信息.

我只是想比较两段代码,看看哪一段需要更长时间.我知道一段代码可能比另一段更多地进行垃圾收集,但我不确定它会产生多大的影响.

我应该关注哪些指标?

而且,最重要的是,有人可以解释为什么"经过的实时"总是比CPU时间长 - 是什么导致两者之间的滞后?

benchmarking

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

使用 settype() 与 *val() 函数进行最快的 PHP 类型处理?

我试图找出最快的方法(在 PHP 5 中)来检查一个值是否是我需要类型。我创建了两行代码,它们都做同样的事情。问题是我无法根据基准确定哪个最快。

(is_scalar($value) ? intval($value) : 0);
settype($value, 'integer');
Run Code Online (Sandbox Code Playgroud)

我创建了以下测试代码,但除了我自己的 PC(Core2Quad + XP 32 位 + php5.2.5)和一个用于测试它的 Dreamhost 帐户之外,我没有其他任何东西 - 这两个代码显示的时间大致相同。

$array = array(
    'false' => FALSE,
    'false2'=> 0,
    'false3'=> '0',
    'false4'=> 'FALSE',
    'true'  => TRUE,
    'true2' => 1,
    'true3' => '1',
    'true4' => 'TRUE',

    'char'  => chr(250),
    'char2' => chr(10),
    'utf'   => 0xF0,
    'utf1'  => 0xFE,

    'number' => '452.5435',
    'number2' => '-3948.33e2',
    'number3' => -343.54,
    'number4' => 99.999,
    'number5' => '3jk439fjk23945t324098523.349fj324r',

    'int'   => …
Run Code Online (Sandbox Code Playgroud)

php benchmarking setvalue

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

Mysql 中的基准函数(令人难以置信的结果)

我有2张桌子:

拥有 3 百万行的作者。

预订 20 英里的行。

.

所以我用连接对这个查询进行了基准测试:

SELECT BENCHMARK(100000000, 'SELECT book.title, author.name
FROM `book` , `author` WHERE book.id = author.book_id ')
Run Code Online (Sandbox Code Playgroud)

这是结果:

查询耗时 0.7438 秒

使用连接进行 1 亿次查询仅需要 0.7438 秒???

我犯了一些错误还是这是正确的结果?

mysql database benchmarking

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

简单的操作浪费时间?

我正在寻找一个简单的操作/例程,如果连续重复,可以"浪费"时间.

我正在研究如何将gprof配置文件应用程序,因此这个"浪费时间"需要在用户空间中浪费时间,并且不需要外部库.IE,调用sleep(20)将"浪费"20秒的时间,但gprof不会记录这次,因为它发生在另一个库中.

对于可以重复浪费时间的简单任务的任何建议?

c++ benchmarking profiling gprof

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

为什么新阵列会变慢?

比较操作时

var fat_cats = cats.slice()
Run Code Online (Sandbox Code Playgroud)

var fat_cats = new Array(cats.length)
Run Code Online (Sandbox Code Playgroud)

性能差异令人困惑.

在firefox和chrome new Array中速度较慢(当它应该更快时,它只是分配一个空数组而不是迭代它)

在IE8 new Array中更快(这只是令人困惑)

任何解释都赞赏.

基准

javascript arrays profile benchmarking

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

D lang简单的基准测试

我是D的新手,我在简单测试中将它与Java进行比较,并希望看到母语更快(或大致相同).但是在我第一次使用递归D的测试中,它比Java慢得多(差不多两次).

Java(这是糟糕的java性能测试,但它只是简单的想法):

public static void main(String... args) {
        long before = System.nanoTime();
        System.out.println(fibonacci(40));
        System.out.println(TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - before));
    }

    static int fibonacci(int n) {
        if (n < 2) {
            return n;
        }
        return fibonacci(n - 2) + fibonacci(n - 1);
    }
Run Code Online (Sandbox Code Playgroud)

环境:Win7 64bit,JDK:1.7.0_10 x64.

d:

import std.stdio;
import std.datetime;

void main(string[] args)
{
    auto r = benchmark!(simplebench)(1);
    writefln("%s", r[0].to!("msecs", int));
}

void simplebench() {
    writeln(fibonacci(40));
}

int fibonacci(int n) {
    if (n < 2) {
        return n;
    }
    return fibonacci(n - 2) …
Run Code Online (Sandbox Code Playgroud)

java benchmarking d

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

适当的基准?

我想测量,2个不同的程序需要多长时间才能执行1个任务.一个程序使用线程,另一个没有.任务是计数高达2000000.

线程的类:

public class Main {
    private int res1 = 0;
    private int res2 = 0;

    public static void main(String[] args) {
        Main m = new Main();

        long startTime = System.nanoTime();
        m.func();
        long endTime = System.nanoTime();

        long duration = endTime - startTime;
        System.out.println("duration: " + duration);
    }

    public void func() {
        Thread t1 = new Thread(new Runnable() {

            @Override
            public void run() {
                for (int i = 0; i < 1000000; i++) {
                    res1++;
                }
            }
        });

        Thread t2 …
Run Code Online (Sandbox Code Playgroud)

java benchmarking multithreading

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

为什么Scala中的这个函数调用没有被优化掉?

我正在使用Scala 2.10.3运行此程序:

object Test {
  def main(args: Array[String]) { 
    def factorial(x: BigInt): BigInt = 
      if (x == 0) 1 else x * factorial(x - 1)

    val N = 1000
    val t = new Array[Long](N)
    var r: BigInt = 0

    for (i <- 0 until N) {
      val t0 = System.nanoTime()

      r = r + factorial(300)
      t(i) = System.nanoTime()-t0
    }

    val ts = t.sortWith((x, y) => x < y)

    for (i <- 0 to 10)
      print(ts(i) + "  ")

    println("***  " …
Run Code Online (Sandbox Code Playgroud)

optimization benchmarking scala

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

PyPy比Python快17倍.Python可以加速吗?

解决了最近出现的代码问题,我发现我的默认Python比PyPy慢约40倍.通过在函数中运行限制调用和限制全局查找,我能够通过此代码将其降低到大约17倍len.

现在,e.py在python 3.6.3上运行5.162秒,在我的机器上在PyPy上运行.297秒.

我的问题是:这是JIT的不可缩短的加速,还是有某种方法可以加速CPython的回答?(没有极端的意思:我可以去Cython/Numba或其他什么?)我如何说服自己,我无能为力?


请参阅gist以获取数字输入文件列表.

问题陈述所述,它们代表跳跃偏移.position += offsets[current],并将当前偏移量增加1.当跳转将您带到列表外时,您就完成了.

这是给出的示例(需要5秒的完整输入更长,并且具有更大的数字):

(0) 3  0  1  -3  - before we have taken any steps.
(1) 3  0  1  -3  - jump with offset 0 (that is, don't jump at all). Fortunately, the instruction is then incremented to 1.
 2 (3) 0  1  -3  - step forward because of the instruction we just modified. The first instruction is incremented again, …
Run Code Online (Sandbox Code Playgroud)

python performance benchmarking pypy

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

如何解释BenchmarkDotNet和dotMemory的结果?

所以,我在我接下来的一段代码Main()方法

for (int x = 0; x < 100; x++) // to mimic BenchmarkDotnet runs
   for (int y = 0; y < 10000; y++)
     LogicUnderTest();
Run Code Online (Sandbox Code Playgroud)

接下来,我正在测试以下课程

[MemoryDiagnoser, ShortRunJob]
public class TestBenchmark
{
    [Benchmark]
    public void Test_1()
    {
        for (int i = 0; i < 10000; i++)
            LogicUnderTest();
    }
}
Run Code Online (Sandbox Code Playgroud)

运行后Main()dotMemory了6分钟左右,我收到下面的结果

在此处输入图片说明

该应用程序从开始10Mb14Mb

但是当我进行BenchmarkDotnet测试时我得到了 在此处输入图片说明

我看到我已经2.6GB分配了。什么?似乎一点也不好。另外,我看不到Gen1Gen2列。这是否意味着代码没有在其中分配任何内容,所以没有任何显示?

如何解释结果?看起来完全可以DotMemory,但不能接受BenchmarkDotNet。我是新手,BenchmarkDotnet将对有关结果的任何信息有所帮助。

PS。LogicUnderTest() …

.net c# benchmarking benchmarkdotnet dotmemory

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