+ -
当前位置:首页 → 问答吧 → 如何快速存取大数组

如何快速存取大数组

时间:2011-12-04

来源:互联网

如下例子:

int i,iDimMax,iDim[1000 0000];

iDimMax = -1;
for( i = 0 ; i < 1000 0000; i++ )
{
  if( ... )
  continue;

  iDim[ ++ iDimMax ] = i;
}

发觉这数组存入 i 值很慢,有何快速的方法? 谢了!

作者: keith_cheung   发布时间: 2011-12-04

memcpy

作者: whycom   发布时间: 2011-12-04

if( ... ) 复杂的话,自己简化。

多核的话,多线程可以快一点,

否则用汇编语言自己写。

没有其它办法。

作者: hztj2005   发布时间: 2011-12-04

不是这么会事啊!

iDim[ ++ iDimMax ] = i

将此句删除和保留,运行时间差别太大了。

作者: keith_cheung   发布时间: 2011-12-04

引用 3 楼 keith_cheung 的回复:
不是这么会事啊!

iDim[ ++ iDimMax ] = i

将此句删除和保留,运行时间差别太大了。


cpu就8个寄存器,如果程序简单到不需要在寄存器与内存中交换数据,就非常快。

如果需要,速度就慢至少一个数量级。

你可以保留此句,删掉if句,看看速度。

总之,要想快,除非你自己用汇编写,否则你很难控制,达到自己的目的。

作者: hztj2005   发布时间: 2011-12-04

慢吗? 我试了一下很快啊 除非是你的if中有耗时的操作

作者: heksn   发布时间: 2011-12-04