|
|
1
1
使用下面的代码,我能够相对一致地获得以下计时(在几毫秒内):
这里有几点需要注意。
|
|
|
2
11
第二,在方法实际运行之前,它不会被JIT。因此,即时编译时间被添加到其执行时间中。 一个真正的测试将每次运行多次并平均结果(任何数量的事情都可能导致一个或另一个在总共Y次运行X时变慢),并且您的程序集应该使用 ngen.exe . |
|
|
3
5
当您使用.NET3.5时,为什么要使用
有几件事可以尝试:
期待 任何一个能产生重大(积极)影响的因素,都是我下一步要尝试的。
|
|
|
4
2
我不确定是否允许发布Reflector代码,但是如果您打开使用Reflector的方法,您可以看到它本质上是相同的 (有一些针对空值的优化,但是您的测试工具不包括空值)。
我能看到的唯一区别就是
|
|
|
5
1
用一个
好的优化器应该没有任何区别,因为语义似乎是相同的。然而
优化器可以优化您的功能,但不如硬编码的
|
|
|
6
1
首先,如果您使用的是提前知道的类型,我建议您使用泛型。所以用列表代替ArrayList。在引擎盖下面,ArrayList.Contains实际上比您正在做的要多一些。以下是来自反射器的信息:
您确定您正在处理完全编译的代码吗?也就是说,当您的代码第一次运行时,它得到了JIT编译,而框架显然已经编译好了。 |
|
7
1
编辑之后,我复制了代码并对其进行了一些改进。
要查看此信息,请将跑步更改为以下表格:
|
|
|
8
0
我猜想ArrayList是用C++编写的,可以利用一些微优化(注意:这是猜测)。 例如,在C++中,可以使用指针算术(特别是增加指针来重复数组),比使用索引更快。 |
|
|
9
0
否则,您应该使用集合。 |
|
|
10
0
阅读评论后修订: |
|
|
11
0
使用
使用KeyedCollection的优点是Add方法不需要指定键。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |