标签: benchmarking

为什么在C++中读取stdin的行比Python要慢得多?

我想比较使用Python和C++从stdin读取字符串的读取行,并且看到我的C++代码运行速度比等效的Python代码慢一个数量级,这让我很震惊.由于我的C++生锈了,我还不是专家Pythonista,请告诉我,如果我做错了什么或者我是否误解了什么.


(TLDR回答:包括声明:cin.sync_with_stdio(false)或者只是fgets改用.

TLDR结果:一直向下滚动到我的问题的底部并查看表格.)


C++代码:

#include <iostream>
#include <time.h>

using namespace std;

int main() {
    string input_line;
    long line_count = 0;
    time_t start = time(NULL);
    int sec;
    int lps;

    while (cin) {
        getline(cin, input_line);
        if (!cin.eof())
            line_count++;
    };

    sec = (int) time(NULL) - start;
    cerr << "Read " << line_count << " lines in " << sec << " seconds.";
    if (sec > 0) {
        lps = line_count / sec;
        cerr << " LPS: " << lps …
Run Code Online (Sandbox Code Playgroud)

c++ python benchmarking iostream getline

1738
推荐指数
10
解决办法
25万
查看次数

'real','user'和'sys'在time(1)的输出中意味着什么?

$ time foo
real        0m0.003s
user        0m0.000s
sys         0m0.004s
$
Run Code Online (Sandbox Code Playgroud)

"真实","用户"和"系统"在时间输出中意味着什么?

在对我的应用进行基准测试时哪一个有意义?

unix time benchmarking

1622
推荐指数
6
解决办法
42万
查看次数

如何在Java中编写正确的微基准测试?

你如何在Java中编写(并运行)正确的微基准测试?

我在这里寻找代码示例和注释,说明要考虑的各种事项.

示例:基准测量应该测量时间/迭代或迭代/时间,为什么?

相关:秒表基准可以接受吗?

java benchmarking jvm jvm-hotspot microbenchmark

835
推荐指数
11
解决办法
11万
查看次数

为什么2*(i*i)比Java中的2*i*i更快?

以下Java程序平均需要在0.50到0.55之间运行:

public static void main(String[] args) {
    long startTime = System.nanoTime();
    int n = 0;
    for (int i = 0; i < 1000000000; i++) {
        n += 2 * (i * i);
    }
    System.out.println((double) (System.nanoTime() - startTime) / 1000000000 + " s");
    System.out.println("n = " + n);
}
Run Code Online (Sandbox Code Playgroud)

如果我更换2 * (i * i)2 * i * i,它需要0.60〜0.65s之间运行.怎么会?

我运行了每个版本的程序15次,在两者之间交替.结果如下:

 2*(i*i)  |  2*i*i
----------+----------
0.5183738 | 0.6246434
0.5298337 | 0.6049722
0.5308647 | 0.6603363
0.5133458 | 0.6243328
0.5003011 | …
Run Code Online (Sandbox Code Playgroud)

java performance benchmarking jit bytecode

833
推荐指数
10
解决办法
24万
查看次数

为什么Python代码在函数中运行得更快?

def main():
    for i in xrange(10**8):
        pass
main()
Run Code Online (Sandbox Code Playgroud)

Python中的这段代码运行(注意:时序是在Linux中的BASH中使用时间函数完成的.)

real    0m1.841s
user    0m1.828s
sys     0m0.012s
Run Code Online (Sandbox Code Playgroud)

但是,如果for循环没有放在函数中,

for i in xrange(10**8):
    pass
Run Code Online (Sandbox Code Playgroud)

然后它会运行更长的时间:

real    0m4.543s
user    0m4.524s
sys     0m0.012s
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

python performance benchmarking profiling cpython

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

C++比C#快多少?

或者它现在反过来了?

从我所听到的有些领域,C#证明比C++更快,但我从来没有勇气自己测试它.

你们中的任何一个人都可以详细解释这些差异,或者将我指向正确的地方以获取相关信息.

c# c++ performance benchmarking

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

Clang vs GCC - 产生更好的二进制文件?

我目前正在使用GCC,但最近我发现了Clang而且我正在考虑切换.但是有一个决定性的因素 - 它产生的二进制文件的质量(速度,内存占用,可靠性) - 如果gcc -O3能够生成运行速度快1%或内存减少1%的二进制文件,那么它就是一个交易破坏者.

Clang拥有比GCC更好的编译速度和更低的编译时内存占用,但我真的对基准测试/比较结果编译软件感兴趣 - 你能指点我一些或描述你的经历吗?

compiler-construction optimization benchmarking gcc clang

228
推荐指数
7
解决办法
10万
查看次数

使用AB进行负载测试...假失败请求(长度)

为了我自己的好奇心做一些负载测试,在我的服务器上运行:

ab -kc 50 -t 200 http://localhost/index.php
Run Code Online (Sandbox Code Playgroud)

这将打开50个保持活动连接200秒,然后使用index.php请求猛烈抨击我的服务器

在我的结果中,我得到:

Concurrency Level:      50
Time taken for tests:   200.007 seconds
Complete requests:      33106
Failed requests:        32951
   (Connect: 0, Receive: 0, Length: 32951, Exceptions: 0)
Write errors:           0
Keep-Alive requests:    0
Total transferred:      1948268960 bytes
HTML transferred:       1938001392 bytes
Requests per second:    165.52 [#/sec] (mean)
Time per request:       302.071 [ms] (mean)
Time per request:       6.041 [ms] (mean, across all concurrent requests)
Transfer rate:          9512.69 [Kbytes/sec] received
Run Code Online (Sandbox Code Playgroud)

请注意32951"失败"请求.我无法弄清楚这一点.

在测试运行时,我能够完美地从家用计算机访问我的网站,尽管页面底部的页面加载时间报告为.5而不是通常的.02.但是我从来没有遇到过失败的请求.

那么为什么AB报告说有一半的连接失败了?"长度:"在这种情况下意味着什么?

谢谢

benchmarking load-testing apachebench

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

Redis比mongoDB快多少?

人们普遍提到Redis是"Blazing Fast",mongoDB也很快.但是,我很难找到比较两者结果的实际数字.鉴于类似的配置,功能和操作(并且可能显示因子如何随着不同的配置和操作而变化)等,Redis速度提高了10倍,速度提高了2倍,速度提高了5倍?

我只谈到性能.据我所知,mongoDB是一个不同的工具,具有更丰富的功能集.这不是"mongoDB 比Redis 更好 "的辩论.我问,Redis比mongoDB好多少?

在这一点上,即使是便宜的基准也比没有基准更好.

benchmarking mongodb redis

197
推荐指数
5
解决办法
7万
查看次数

C程序的执行时间

我有一个C程序,旨在在几个处理器上并行运行.我需要能够记录执行时间(可能是1秒到几分钟).我已经搜索了答案,但他们似乎都建议使用该clock()函数,然后计算程序所用的时钟数除以该Clocks_per_second值.

我不确定如何Clocks_per_second计算价值?

在Java中,我只是在执行之前和之后以毫秒为单位.

C中有类似的东西吗?我看过了,但我似乎无法找到比第二种解决方案更好的方法.

我也知道分析器是一个选项,但我希望自己实现一个计时器.

谢谢

c benchmarking

194
推荐指数
9
解决办法
40万
查看次数