ZHCUCO7B December 2024 – November 2025 F29H850TU , F29H859TU-Q1
用户可以使用不同的剖析技术对其应用程序代码进行基准测试。启用优化后,编译器可以重新排序操作并执行内联等。这有时会使用户难以准确了解进行剖析的内容,以及进行剖析的内容是否确实是用户想要剖析的内容。
“__builtin_instrumentation_label()”是一个非常有用的标签,可以在需要进行剖析的代码前后使用(请参阅下面的代码块)。但是,当启用优化时,它并不是完美的代码屏障。除了将代码块轮廓化为自己的函数、将代码块标记为非内联以禁用内联以及调用该函数之外,C29 编译器没有真正的代码移动障碍。
// Example 1
__builtin_instrumentation_label("profiling_start");
function1();
__builtin_instrumentation_label("profiling_stop");
// Example 2
__builtin_instrumentation_label("profiling_start");
// code being profiled
..
..
__builtin_instrumentation_label("profiling_stop");