我试图了解如何在使用 gcc 编译时禁用内核模块的代码优化。我试着给这样的编译指示
#pragma optimize("",off)
void rt_ct_use_cpu(unsigned long long n_cicle){
unsigned long long i;
for(i=0;i<n_cicle;i++);
}
#pragma optimize("",on)
但是编译器会发出警告说它将忽略那些编译指示。我还尝试制作一些避免编译器滚动循环的东西
void rt_ct_use_cpu(unsigned long long n_cicle){
unsigned long long i;
unsigned long long time=0;
unsigned long long timebase = rt_get_cpu_time_ns();
for(i=0;i<n_cicle;i++) {
time += rt_get_cpu_time_ns();
time -= timebase;
}
}
但在这种情况下,cicle 有多长(n_cicle 有多大)并不重要,程序将始终运行相同的时间(几毫秒)
你能帮助我吗?