【发布时间】:2012-09-08 01:33:56
【问题描述】:
我想对 bool 数组的连续元素块执行 not 操作,然后读回完整的数组。我正在使用以下代码来执行操作。
bool arr[100000]={0};
cin>>x>>y;
for(i=x; i<=y; i++)
arr[i]=!arr[i];
//Some other operations on the array
for(i=0; i<=100000; i++)
arr+=arr[i];
这很好,但我正在尝试提高程序的速度。有没有更好的方法来执行相同的操作?
【问题讨论】:
-
您是否尝试展开?您是否尝试过使用 structs 作为 32 位部件来使 32 位不使用单个操作进行操作?
-
cin >> i然后for(i = x...如果你只是要替换它,为什么还要麻烦输入呢? -
这段代码没有意义。为什么要从
std::cin填充i,然后立即用x覆盖它?arr+=arr[i];应该是什么意思? -
我认为他正在更改数组相对于其他元素的地址,并且数组地址开始在那里晃来晃去
-
将 32 位打包到一个 int 中(假设它在您的机器上是 32 位),然后在 int 上使用按位“非”。您甚至可以使用 SIMD 命令同时使用 4 个整数。你试过编译器优化吗?
标签: c++ performance processing-efficiency