gpt4 book ai didi

java - 两种代码速度对比

转载 作者:行者123 更新时间:2023-12-01 11:54:00 25 4
gpt4 key购买 nike

我相信有很多类似的问题,如果这太常见了,抱歉。我想了解哪一个更好/更快/节省空间等以及原因。

public static void(String[] main){
//case 1
String[] str_arr = new String[n];
method1(str_arr)

//case 2
String[] str_arr = new String[n];
String[] arr = new String[n];
for(int i=0; i < n; i++){
arr[i] = str_arr[i].split("some_char")[2];
}
method2(arr);
}

void method1(String[] str_arr){
String[] arr = new String[n];
for(int i=0; i < n; i++){
arr[i] = str_arr[i].split("aChar")[2];//assume there are 50 of aChar
}
// do_something with arr ;
}

void method2(String[] arr){
// do_something with arr ;
}

我应该选择哪一个?

提前致谢。

最佳答案

这完全取决于您的判断。

说到性能原因:

  • 尽可能使用增强型 for 循环,因为它们有时会影响循环性能(请参阅此处的一个不错的微基准: Java Enhanced-For-Loop FASTER than traditional? ),或者...
  • 如果不再需要原始存储阵列,请不要创建额外的存储阵列。只需读取该值,将其 split() 并存储回来即可。对于非常大的数组,您可以节省一些分配时间和空间。
  • 在这个特定示例中,方法调用的实际成本可以忽略不计。如果您特别偏执(不推荐),您可以将该方法设为静态,以防止成为 thiscall 函数。

就干净整洁的代码而言:

  • 您的方法看起来可能是通用的,因此它非常适合仅接受数组和分隔符并拆分其所有元素的方法。
  • 为方便起见,建议 main() 代码尽可能小且紧凑。

TL;DR 选择第一个选项,并最终进行一些修改。

此外,在实际将元素放入数组之前拆分元素可能是个好主意。

关于java - 两种代码速度对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28578444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com