【发布时间】:2011-06-25 23:37:43
【问题描述】:
考虑以下代码:
Dim arr1 As New List(Of Double)
Dim arr2 As New List(Of Object)
Dim timeStart As DateTime = Now
For x As Integer = 0 To 1000000
arr1.Add(3.14159)
Next
Dim timeEnd As DateTime = Now
MsgBox(((timeEnd - timeStart).Seconds).ToString())
timeStart = Now
arr2.Add(New List(Of Double))
For x As Integer = 0 To 1000000
arr2(0).add(3.14159)
Next
timeEnd = Now
MsgBox(((timeEnd - timeStart).Seconds).ToString())
它涉及 2 个列表。第一个是一维的,第二个是二维的。
第一个例程(在第一个列表上运行)在大约 0.015 秒内完成。然而,第二个例程(在第二个列表上运行)需要将近 10 秒。唯一的区别是第二个列表是二维的。
我在这里遗漏了什么吗?有没有办法加快速度或者我做错了什么?我有一个程序需要几个二维数组,现在运行速度非常慢。如果列表是一维的,我怎样才能加快速度以获得相同的反馈?
【问题讨论】:
-
你有一个列表列表,而不是一个二维数组......
-
这不是二维列表。我看不到列表列表如何完成任何有用的事情。您能描述一下您的实际代码和要求吗?也许有人可以帮助您设计出更好、更高效的设计。
-
哦,好吧,我很笨。知道为什么第二个这么慢吗?
-
Cody:它用于图形应用程序。我正在跟踪一系列多边形,每个多边形都有一系列点。列表的第一个索引定义了我正在处理的多边形,第二个定义了该多边形的哪个顶点。所以 arr(1)(12) 将是第二个多边形的第 13 个顶点,等等。
-
那么,您实际上是将第一个列表声明为
List(Of Object),还是使用List(Of MyPolygonClass)之类的东西?
标签: .net vb.net performance list arraylist