相关疑难解决方法(0)

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

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

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

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

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

java benchmarking jvm jvm-hotspot microbenchmark

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

访问各种缓存和主内存的近似成本?

任何人都可以给我大概的时间(以纳秒为单位)来访问L1,L2和L3缓存,以及Intel i7处理器上的主内存吗?

虽然这不是一个特别的编程问题,但是对于某些低延迟编程挑战而言,了解这些速度细节是必要的.

memory latency low-latency cpu-cache

167
推荐指数
5
解决办法
8万
查看次数

为什么2*x*x比Python 3.x中的2*(x*x)快,对于整数?

以下Python 3.x整数乘法平均在1.66s和1.77s之间:

import time
start_time = time.time()
num = 0
for x in range(0, 10000000):
    # num += 2 * (x * x)
    num += 2 * x * x
print("--- %s seconds ---" % (time.time() - start_time))
Run Code Online (Sandbox Code Playgroud)

如果我更换2 * x * x2 *(x * x),它需要之间2.042.25.怎么会?

另一方面,它与Java相反:2 * (x * x)Java更快.Java测试链接:为什么2*(i*i)比Java中的2*i*i更快?

我运行了每个版本的程序10次,这里是结果.

   2 * x * x        |   2 * (x * x)
---------------------------------------
1.7717654705047607  | 2.0789272785186768
1.735931396484375   | …
Run Code Online (Sandbox Code Playgroud)

python performance benchmarking python-3.x integer-arithmetic

39
推荐指数
2
解决办法
3079
查看次数

为什么优化后消失了?

int suma(int* array, int len)
{
    asm("    xor %eax, %eax           # resultado = 0   \n"
        "    xor %edx, %edx           # i = 0           \n"
        "1:  add (%rdi,%rdx,4), %eax  # res += array[i] \n"
        "    inc %edx                 # ++i             \n"
        "    cmp %edx,%esi            # i < len?        \n"
        "    jne 1b                   # repetir         \n"
//      "    ret                                        \n"
       );
}

int main()
{
    int v[100];
    return suma(v, 100);
}
Run Code Online (Sandbox Code Playgroud)

为什么gcc会retsuma()on 的末尾插入-O0,但我必须自己添加on -O3

来自gcc …

c assembly gcc inline-assembly compiler-optimization

4
推荐指数
1
解决办法
783
查看次数