C# 价值分配会增加或降低绩效,还是什么都不做?

C# 价值分配会增加或降低绩效,还是什么都不做?,c#,arrays,C#,Arrays,从来没有想过这一点,但是赋值,例如int a=100,是提高性能还是降低性能,或者根本不起作用?现在,int a=100不是我真正想要的,但是,假设你有这样的想法: string[] a = new string[] { null, "a", "b", "", null } string[] b = new string[] { null, "a", "b", "", null } bool result = Equals(a, b); public static bool Eq

从来没有想过这一点,但是赋值,例如
int a=100
,是提高性能还是降低性能,或者根本不起作用?现在,
int a=100
不是我真正想要的,但是,假设你有这样的想法:

 string[] a = new string[] { null, "a", "b", "", null }

 string[] b = new string[] { null, "a", "b", "", null }

 bool result = Equals(a, b);


 public static bool Equals<T>(T[] array, T[] buffer)
 {
      if (array != null && array.Length > 0 && buffer != null && buffer.Length > 0 && array.Length == buffer.Length)
      {
      for (int i = 0; i < array.Length; i++)
      {
           if (array[i] == null && buffer[i] != null)
           {
                break;
           }
           else if (array[i] != null && buffer[i] == null)
           {
                break;
           }
           else if (array[i].ToString() != buffer[i].ToString())
           {
                break;
           }
           else if (i == array.Length - 1)
           {
                return true;
           }
      }
      }
      return false;
 }
string[]a=新字符串[]{null,“a”,“b”,“null}
字符串[]b=新字符串[]{null,“a”,“b”,““”,null}
布尔结果=等于(a,b);
公共静态bool等于(T[]数组,T[]缓冲区)
{
if(array!=null&&array.Length>0&&buffer!=null&&buffer.Length>0&&array.Length==buffer.Length)
{
for(int i=0;i

T cell=array[i]
T cell2=buffer[i]
在Equals方法中)然后将
cell
cell2
进行比较,会提高性能和速度吗?还是会降低性能和速度,还是什么都不会改变

对数组元素的内存调用
array[i]
包括在汇编代码中将元素索引添加到基址,但这基本上不需要花费任何成本,它与调用变量
cell
一样简单。因此,在您的示例中,引入变量
T cell=array[i]
T cell2=buffer[i]
不会影响性能


但在其他一些情况下,当表达式需要更多的时间进行计算时,在开始时引入变量并保存值一次是合理的。

如果它会产生影响,则会被优化器拾取。您将执行6个解引用操作,而不是每个循环中仅执行两个。由于您总是使用相同的值,因此无需在任何地方重复
array[i]
。您是否遇到了性能问题,并且您确定上述代码是该问题的根源?否则我想你可能是想得太多了;)顺便说一句,如果您感兴趣(为了一个狂欢的夜晚),您可以下载BenchmarkDotNet,并为您的方法的各种迭代计时,您可能已经提供了您在这里尝试做的事情。你会对哪些性能更好,哪些性能差有更好的感觉。