#include #include #include #include // 使用 std::uint8_t 替代用户定义的 uint8_t #include // 声明外部实现的 SAD 函数(不包含函数体) extern "C" { int x264_pixel_sad_16x16(uint8_t *pix1, int i_stride_pix1, uint8_t *pix2, int i_stride_pix2); } // 单元测试函数(保持不变) void test_sad() { // ...(与之前相同) } // 改进的计时函数(多次执行取平均) void measure_time(int iterations = 1000) { // 准备测试数据(可填充任意数据) uint8_t pix1[16 * 16] = {0}; uint8_t pix2[16 * 16] = {0}; // 避免编译器优化掉循环 int result_sum = 0; auto start = std::chrono::high_resolution_clock::now(); for (int i = 0; i < iterations; ++i) { result_sum += x264_pixel_sad_16x16(pix1, 16, pix2, 16); } auto end = std::chrono::high_resolution_clock::now(); // 计算时间差(微秒) auto total_duration = std::chrono::duration_cast(end - start).count(); auto avg_duration = total_duration / static_cast(iterations); std::cout << "Total Execution Time for " << iterations << " iterations: " << total_duration << " μs" << std::endl; std::cout << "Average Execution Time: " << avg_duration << " μs" << std::endl; std::cout << "Total Result Sum: " << result_sum << std::endl; // 验证结果未被优化掉 } int main() { // 运行单元测试 test_sad(); std::cout << "All tests passed!" << std::endl; // 执行计时(默认 1000 次迭代) measure_time(); return 0; }