当前位置:  开发笔记 > 编程语言 > 正文

泛型与数组列表

如何解决《泛型与数组列表》经验,为你挑选了2个好方法。

我在这里工作的系统是在.net 2.0之前编写的,并没有使用泛型.它最终更新到2.0,但由于时间限制,没有任何代码被重构.在许多地方,代码使用ArraysLists等将事物存储为对象.

从性能角度来看,将代码更改为使用泛型有多重要?我从性能的角度来看,拳击和拆箱等等,这是低效的,但是改变它会带来多大的性能提升?仿制药是否可以在前进的基础上使用,或者是否有足够的性能变化以便为更新旧代码做出良心努力?



1> Rory..:

从技术上讲,仿制药的性能,正如你所说,更好.但是,除非性能非常重要并且您已经在其他领域进行了优化,否则您可能会花时间在其他地方获得更好的改进.

我会建议:

继续使用泛型.

如果您有可靠的单元测试,那么在触摸代码时重构泛型

花费其他时间进行重构/测量,这将显着提高性能(数据库调用,更改数据结构等),而不是几毫秒.

当然除了性能之外还有其他原因可以改为泛型:

因为你有类型的编译时检查,所以不容易出错

更具可读性,您不需要遍布整个地方,而且显而易见的是,哪种类型存储在集合中

如果你正在使用泛型,那么在任何地方使用它都会更清晰



2> torial..:

这是我从100KB文件中简单解析一个字符串100,000次得到的结果.通用列表(Of char)在文件中花费了612.293秒来完成100,000次.ArrayList花了2,880.415秒来完成文件的100,000次.这意味着在这种情况下(因为您的里程有所不同),通用列表(Of char)的速度要快4.7倍.

这是我运行了100,000次的代码:

Public Sub Run(ByVal strToProcess As String) Implements IPerfStub.Run
    Dim genList As New ArrayList

    For Each ch As Char In strToProcess.ToCharArray
        genList.Add(ch)
    Next

    Dim dummy As New System.Text.StringBuilder()
    For i As Integer = 0 To genList.Count - 1
        dummy.Append(genList(i))
    Next

End Sub

 Public Sub Run(ByVal strToProcess As String) Implements IPerfStub.Run
     Dim genList As New List(Of Char)

     For Each ch As Char In strToProcess.ToCharArray
         genList.Add(ch)
     Next

     Dim dummy As New System.Text.StringBuilder()
     For i As Integer = 0 To genList.Count - 1
         dummy.Append(genList(i))
     Next
 End Sub

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有