array vs.list性能问题

11 浏览
0 Comments

array vs.list性能问题

我想知道哪种方法更好来完成这个任务。

string[] week = new string[7]
  week[0] = "Sunday";
  week[1] = "Monday";
  week[2] = "Tuesday";
  foreach (string day in week)
   {
     //执行一些任务
   }

List week = new List();
 list.Add("Sunday");
 list.Add("Monday");
 list.Add("Tuesday");
 foreach (string day in list) 
 {
    //执行一些任务
 }

是否存在性能问题?还有其他更好的方法吗?谢谢。

0
0 Comments

数组和列表之间的性能问题是一个常见的讨论话题。在处理任务时,很多人都想知道哪种方法更好。但实际上,并没有一个简单的解决方案。虽然数组在一般情况下更快,但在插入和删除元素时会遇到严重的问题,因为所有元素都必须复制到一个新的数组中。列表则没有复制问题,但每个条目都是一个节点,这意味着更多的内存使用和更多的内存访问。这使得随机访问变慢,有时甚至明显慢。如果你只是使用foreach,特别是只有7个元素,那么这个问题就不那么重要了。但如果你有数千次访问一个250,000个项目的列表,这个问题就会变得非常重要。

作为学习编程的一部分,了解列表中每个项目的标准特性是非常重要的。上面的问题是一个初级水平的问题,我喜欢在程序员面试中使用这个问题来淘汰那些不称职的人。

选择数组还是列表要根据具体情况而定。如果你的应用需要频繁进行插入和删除操作,并且数据量较小,则使用数组可能更合适。如果你的应用需要频繁进行随机访问,并且数据量较大,则使用列表可能更合适。在编写代码时,需要权衡这些因素,并根据实际情况做出选择。

0
0 Comments

array vs. list性能问题

在编程中,我们经常需要使用数组(array)和列表(list)来存储和操作数据。然而,在某些情况下,我们可能会遇到array和list的性能问题。下面我们来探讨一下这个问题的原因以及解决方法。

出现原因:

当我们需要频繁地向数组或列表中添加相同类型的元素时,就会出现性能问题。具体来说,当我们使用数组时,我们可以使用如下语法来初始化数组并赋值:

String[] week = new String[]{
    "Sunday",
    "Monday",
    ...
};

这种方式能够提高性能,因为数组的大小是固定的,不会随着元素的增加而重新调整大小。而当我们使用列表时,列表会自动调整大小以容纳新的元素,这就导致了性能上的损失。

解决方法:

要解决这个性能问题,我们可以考虑使用数组代替列表。使用数组的好处是它的大小是固定的,不会随着元素的增加而重新调整大小,因此能够提高性能。我们可以使用上述提到的语法来初始化和赋值数组。

然而,如果我们需要频繁地在数组中添加或删除元素,那么使用列表可能是更好的选择。列表会自动调整大小以适应新的元素,这样可以方便地操作元素。在这种情况下,我们可以使用如下语法来初始化和赋值列表:

List week = new ArrayList(){{
    add("Sunday");
    add("Monday");
    ...
}};

使用列表的好处是它可以动态调整大小,适应不同数量的元素,这样可以方便地操作和修改元素。

当我们需要频繁地添加相同类型的元素时,使用数组可以提高性能。而当我们需要频繁地添加或删除元素时,使用列表可能更合适。根据具体的需求,我们可以选择合适的数据结构来提高程序的性能。

0
0 Comments

array vs. list性能问题的出现原因是,尽管List背后有一个数组,但是在对列表进行迭代时需要经过更多的方法调用层级来获取值,而数组则几乎是直接的内存寻址。尽管差异很小,但是数组的性能可能会稍微好一些。然而,这种差异非常小,需要迭代数千次才能测量出来。这就是所谓的微小优化,通常被认为是一种努力浪费。

解决这个问题的方法是,不要过于关注微小的性能优化,因为它所带来的改进是微乎其微的。相反,应该更加关注代码的可读性、可维护性和可扩展性,这样更有助于提高整体性能。

感谢提供关于微小优化的信息。

0