在数字上加1比在C ++中同时添加所有内容慢吗?

未解决的密码

如果我有一个数字a,将它加1次b而不是简单地加上a + b会更慢吗?

a += b;

或者

for (int i = 0; i < b; i++) {
  a += 1;
}

我意识到第二个示例似乎很愚蠢,但是我遇到了这样一种情况,那就是编码实际上会更容易,并且我想知道这是否会影响性能。

编辑:谢谢您的所有答复。看起来有些张贴者想知道我的情况。我正在尝试编写一个函数,如果输入的字符是字母,则将输入的字符移位一定数量的字符(即密码)。因此,我想说一个char + =移位数,但是我还需要考虑ascii表上小写字符和大写字符之间的跳转,并且还要从z换回A。可以用另一种方式实现,我认为最简单的方法是继续添加一个字母,直到到达字母字符块的末尾,然后跳到下一个字母并继续。

Yakk-亚当·内夫罗蒙特

C ++语言没有描述这些操作需要花费多长时间。编译器可以自由地将您的第一个语句转换为第二个语句,这是编译该语句的合法方法。

实际上,假设所有东西都是type,许多编译器会将这两个子表达式视为同一个表达式int但是,第二种方法很脆弱,因为看似无害的更改会导致性能大幅下降。类型的小变化“无关紧要”,附近有多余的语句,等等。

这将是极为罕见的第一比第二慢,但如果类型a是这样的,+= b是不是调用慢得多操作+= 1了一堆的时代,这可能是。例如;

struct A {
  std::vector<int> v;
  void operator+=( int x ) {
    // optimize for common case:
    if (x==1 && v.size()==v.capacity()) v.reserve( v.size()*2 );
    // grow the buffer:
    for (int i = 0; i < x; ++i)
      v.reserve( v.size()+1 );
      v.resize( v.size()+1 );
    }
  }
};

那么A a; int b = 100000; a+=b;将花费比循环构造更长的时间。

但是我必须努力。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在某个数字上加 1 的证明会改变 Coq 中的奇偶校验

C-数字在数字中的位置

在数字C ++中重复数字

每次有人使用命令时如何在数字上加上+1

将NSString中包含字符Objective-C的数字加1

C#中的ENUM命名约定通常在大写中包含所有内容吗?

数字有小数时需要加1个数字

C ++ 11 STL中的所有内容都可以由用户实现吗?

Windows重置后会清除C:\根目录中的所有内容吗?

TR1提供的所有内容现在都可以在C ++ 14中使用并且易于使用吗?

将数字存储在数组中,C ++

对于包含字符和数字的字符串,如何只对所有数字加 1

在数组中添加数字 C++

如何清除C中的所有内容?

在数字计数器上添加文字

在MATLAB中将数字的最低有效位加1

用于在数组1中显示数字而不在数组2中显示数字的Java程序

PHP:给字符串中的每个数字加1

PostgreSQL:在PostgreSQL中同时修改所有表上的OWNER

如何在数组中添加数字同时跳过已添加的数字?

在数组中查找除ID以外的所有内容

如何在for循环中将所有数字1:1000相加?

如何在pandas数据帧列python中将所有数字==加1到0

为什么在数字上调用float()比在Python中添加0.0慢?

尝试根据数字是否在数组中打印 1 或 2

删除模式中任何数字后的所有内容

删除字符串中数字后的所有内容

如何去除变量中除数字以外的所有内容?

删除 R 中数字之前的所有内容