相关疑难解决方法(0)

设置数组所有值的最快方法?

我有一个char [],我想将每个索引的值设置为相同的char值.
有明显的方法(迭代):

  char f = '+';
  char [] c = new char [50];
  for(int i = 0; i < c.length; i++){
      c[i] = f;
  }
Run Code Online (Sandbox Code Playgroud)

但是我想知道是否有一种方法可以利用System.arraycopy或者等效的东西可以绕过迭代的需要.有没有办法做到这一点?

编辑: 来自Arrays.java

public static void fill(char[] a, int fromIndex, int toIndex, char val) {
        rangeCheck(a.length, fromIndex, toIndex);
        for (int i = fromIndex; i < toIndex; i++)
            a[i] = val;
    }
Run Code Online (Sandbox Code Playgroud)

这是完全相同的过程,这表明可能没有更好的方法来做到这一点. 无论如何,对所有
建议的人都要+1 fill- 你们都是正确的,谢谢你们.

java arrays

63
推荐指数
6
解决办法
15万
查看次数

清除一个小整数数组:memset与for循环

有两种方法可以将整数/浮点数组清零:

memset(array, 0, sizeof(int)*arraysize);
Run Code Online (Sandbox Code Playgroud)

要么:

for (int i=0; i <arraysize; ++i)
    array[i]=0;
Run Code Online (Sandbox Code Playgroud)

显然,memset对于大型更快arraysize.但是,在什么时候memset的开销实际上大于for循环的开销?例如,对于大小为5的数组 - 哪个最好?第一个,第二个,甚至可能是未滚动的版本:

array[0] = 0;
array[1] = 0;
array[2] = 0;
array[3] = 0;
array[4] = 0;
Run Code Online (Sandbox Code Playgroud)

c performance benchmarking

56
推荐指数
3
解决办法
6万
查看次数

标签 统计

arrays ×1

benchmarking ×1

c ×1

java ×1

performance ×1