小编Lat*_*Guy的帖子

在运行简单的单线程C++程序时,是否可以消除Linux机器的抖动?

我正在使用运行内核3.5.7的Ubuntu盒进行各种实验.我将我的基准代码预热到1000万次迭代,然后进行9000次迭代.我仍然看到以下抖动:

Average: 242 nanos | Min Time: 230 nanos | Max Time: 4717 nanos  
0.75 = avg: 240, max: 246  
0.9 = avg: 241, max: 247  
0.99 = avg: 242, max: 250  
0.999 = avg: 242, max: 251  
0.9999 = avg: 242, max: 517  
0.99999 = avg: 242, max: **2109** <===  
0.999999 = avg: 242, max: **3724** <===  
0.9999999 = avg: 242, max: **4424** <===
Run Code Online (Sandbox Code Playgroud)

我看到0.01%的迭代时间都很糟糕.是否有可能真正实现Linux内核?内核中是否还有其他东西无法控制?

for(int i = 0; i < iterations; i++) {

    long start = …
Run Code Online (Sandbox Code Playgroud)

c++ optimization performance benchmarking real-time

8
推荐指数
1
解决办法
274
查看次数

FIX引擎从客户端向服务器发送FIX消息的最低延迟时间是什么?

我正在用C++构建一个FIX引擎,但我没有引用知道什么是一个好的性能数字.考虑到网络时间和FIX解析时间,客户端向服务器发送FIX消息的微秒时间是多少?也有人知道这个简单的FIX消息从客户端到服务器操作的当前最低可能延迟吗?

c++ benchmarking latency quickfix fix-protocol

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

使用 -O3 或 -Ofast 来编译您的基准代码是否现实,还是会删除代码?

当使用下面的基准代码编译时,-O3它在延迟方面的差异给我留下了深刻的印象,所以我开始怀疑编译器是否通过以某种方式删除代码而“作弊”。有没有办法检查?我可以安全地进行基准测试-O3吗?期望速度提高 15 倍是否现实?

没有的结果-O3:平均:239纳米最小:230 纳米(900 万次迭代) 有
结果-O3:平均:14纳米,最小:12 纳米(900 万次迭代)

int iterations = stoi(argv[1]);
int load = stoi(argv[2]);

long long x = 0;

for(int i = 0; i < iterations; i++) {

    long start = get_nano_ts(); // START clock

    for(int j = 0; j < load; j++) {
        if (i % 4 == 0) {
            x += (i % 4) * (i % 8);
        } else {
            x …
Run Code Online (Sandbox Code Playgroud)

c++ optimization g++ compiler-flags compiler-optimization

5
推荐指数
1
解决办法
1452
查看次数

对于HotSpot JIT,“已编译为大方法”是什么意思?

我正在浏览JIT HotSpot编译器日志(-XX:+PrintCompilation -XX:+UnlockDiagnosticVMOptions -XX:+PrintInlining),以确保正在优化/编译重要/热门方法。该方法显示:

已经编译成一个大方法

这意味着什么?JIT是否正确优化/内联了我的方法?

Oracle Wiki的这种解释并没有使我得出任何结论:

已经编译成一个大方法:已经有从调用站点调用的方法的已编译代码,并且为其生成的代码大于InlineSmallCode

这意味着什么?这是否意味着我的代码已经过优化/内联,或者HotSpot现在正在跳过它,因为它是在其他地方编译的?

java optimization jit real-time jvm-hotspot

5
推荐指数
1
解决办法
610
查看次数