c - 赋值与增量操作

标签 c performance variable-assignment increment

我正在开发一个应用程序,我必须保持数据排序,每个数据单元都有一个序列号,我检查序列号是否比前一个大 1,如果是,我增加我收到的以 1 计数。我的问题是,两者之间有区别吗:
1. 将我收到的计数增加一。

2. 将最后接收到的序列号分配给接收计数。

谢谢。

最佳答案

对我来说,这听起来像是一个经典的过早优化问题。通常增加值意味着“获取原始->更改->存储”,而分配将是“获取其他->存储新的”。 “其他”可能已经被获取,从而节省更多的时钟周期。因此分配可能会更快。

BUT 加 1 通常会被编译器和 CPU 优化得很好,因此它不需要任何提取或存储。它可以在一个 CPU 命令中很好地完成,从而消除任何差异,实际上,从性能角度来看,增加 1 可能是更好的选择。

困惑?好。

要点是,这是您不应该进行的优化,除非您对瓶颈进行了基准测试。然后你对选项进行基准测试并选择最好的。

关于c - 赋值与增量操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11042565/

相关文章:

不使用指针创建链接列表与使用指针创建链接列表

c - C 中的三元组求和

c - 关于 C 函数,其唯一区别是某些参数的数据类型

c - 如何禁用有关在 GCC 中使用弃用获取的警告?

Java:getter 方法与公共(public)实例变量:性能和内存

javascript - 将 Javascript 弹出 HTML 链接分配给 PHP 变量

mysql - 从某一行向后通过 MySQL 表记录进行 SELECT 的最快方法?

java - 使用直接算术表达式和在运行时将值传递给方法有什么区别吗?

C++ 为什么原始 double 组中的赋值似乎比 double 变量赋值快得多?

objective-c - 在 ARC 下,使用运行时方法分配给对象类型的 ivar 是否合法/安全?