当我看到这个性能报告时,我很困惑。我试了好几次,这个setne指令总是占函数最多。该函数是一个大函数,下面仅显示一小部分函数。
该报告是通过以下方式生成的:
perf record ./test
我检查了性能结果:
perf report --showcpuutilization
从中,我们可以看到setne指令(从顶部开始大约第 10 行,以红色显示)达到了大约 9% 的周期。
有人会帮助我吗,因为我不明白为什么这个“简单的指令”要花这么多时间?也许它与依赖于其他指令的管道排序有关?提前致谢!
顺便说一句:该程序是在 x86_64 架构上使用以下命令编译的:
gcc -g -pg -m32 -o test test.c
以下是CPU信息:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
stepping : 2
microcode : 0x1
cpu MHz : 2494.222
cache size : 16384 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat md_clear spec_ctrl intel_stibp
bogomips : 4988.44
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management: