From 63a10a36ac0bfbb9de85c38f3bf944c4318ebfab Mon Sep 17 00:00:00 2001 From: russelltao Date: Thu, 7 Nov 2019 10:04:04 +0800 Subject: [PATCH] add README --- 1-cpu_cache/README.md | 11 +++++++++++ 1-cpu_cache/traverse_2d_array/README.md | 10 +++++----- 2 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 1-cpu_cache/README.md diff --git a/1-cpu_cache/README.md b/1-cpu_cache/README.md new file mode 100644 index 0000000..87ad2f1 --- /dev/null +++ b/1-cpu_cache/README.md @@ -0,0 +1,11 @@ +### traverse_2d_array +验证连续内存的二维数组是否采用顺序访问以致性能不同。array[i][j]性能优于array[j][i]。 +* 特别是C++程序中的数组相比python的list容器内存更加连续,故性能表现更优 * +### traverse_1d_array + 验证cpu cache line批量载入缓存带来的性能提升时,traverse_2d_array存放了指针导致性能提升有上限。 + traverse_1d_array一维数组没有存放8字节的指针,性能提升更大。 +### branch_predict + 验证了分支预测的作用 +### cpu_migrate + 不考虑多核时,该程序在循环中反复使用有限内存中的数据,缓存命中率非常高。 + 当开启多个线程时,由于发生了CPU迁移,导致缓存命中率下降,性能也有明显的下降。 \ No newline at end of file diff --git a/1-cpu_cache/traverse_2d_array/README.md b/1-cpu_cache/traverse_2d_array/README.md index 72f0699..7386544 100644 --- a/1-cpu_cache/traverse_2d_array/README.md +++ b/1-cpu_cache/traverse_2d_array/README.md @@ -1,7 +1,7 @@ -# C++程序traverse_2d_array.cpp +# 1.C++程序traverse_2d_array.cpp ## 编译程序 ### 安装编译依赖的软件 -如Linux中需要安装gcc-c++,CentOS中可用yum install gcc-c++安装,Ubuntu中可用apt-get install gcc-c++ +如Linux中需要安装gcc-c++,CentOS中可用`yum install gcc-c++`安装,Ubuntu中可用`apt-get install gcc-c++` ### 编译程序 `g++ traverse_2d_array.cpp -o traverse_2d_array` ### 运行验证 @@ -11,7 +11,7 @@ `./traverse_2d_array -s` ### 使用perf验证缓存命中率 #### 使用array[i][j]遍历数组 -perf stat -e cache-references,cache-misses,instructions,cycles,L1-dcache-load-misses,L1-dcache-loads ./traverse_2d_array -f +`perf stat -e cache-references,cache-misses,instructions,cycles,L1-dcache-load-misses,L1-dcache-loads ./traverse_2d_array -f` #### 使用array[j][i]遍历数组 -perf stat -e cache-references,cache-misses,instructions,cycles,L1-dcache-load-misses,L1-dcache-loads ./traverse_2d_array -s -# python程序traverse_2d_array.py \ No newline at end of file +`perf stat -e cache-references,cache-misses,instructions,cycles,L1-dcache-load-misses,L1-dcache-loads ./traverse_2d_array -s` +# 2.python程序traverse_2d_array.py \ No newline at end of file -- GitLab