优化下列代码统计次数int Cctrl_bodysave_normal_funcuint32_t func0 uint32_t func1 uint32_t pos0 uint32_t pos1 for uint32_t i = 0; i m_vec_normal_func_addrsize; i++ if func0 == m_vec_normal_func_add
优化后的代码如下:
int Cctrl_body::save_normal_func(uint32_t func0, uint32_t func1, uint32_t pos0, uint32_t pos1) { for (auto& addr : m_vec_normal_func_addr) { if (func0 == addr.old_func && func1 == addr.new_func) { addr.count++; addr.old_pos_v.push_back(pos0); addr.new_pos_v.push_back(pos1); return 0; } }
addr_map_t st;
st.count = 1;
st.old_func = func0;
st.new_func = func1;
st.old_pos_v.push_back(pos0);
st.new_pos_v.push_back(pos1);
m_vec_normal_func_addr.push_back(st);
return 1;
}
优化说明:
- 使用auto&关键字遍历m_vec_normal_func_addr,避免每次都通过索引访问元素,提高性能。
- 使用引用类型修改m_vec_normal_func_addr中的元素,避免拷贝构造和赋值操作,提高性能。
- 优化了代码结构,更加简洁清晰
原文地址: https://www.cveoy.top/t/topic/iRNn 著作权归作者所有。请勿转载和采集!