2010-02-26 29 views
2

我需要使用Enterprise Services以COM +组件的形式构建服务。使用.NET 3.5编译器编译.NET 1.1 COM +组件代码时的性能提升

该服务正在运行。它得到一个字符串做一些拼写检查并返回一个字符串。

我的问题是:

该组件被编译在.NET 1.1,但我的环境是不会改变的。NET 3.5很快。 因此,如果我在.NET 3.5(实际上是2.0)中编译代码,我会有什么好处吗?只有在.NET3.5中编译才能改变性能?

请记住,我没有使用任何.NET3.5功能(甚至WCF)!

感谢您的帮助。

+1

如果您为.NET 3.5重建它,那么它将不会使用七年前的代码,并且它将会支持更长的时间。这在企业中可能很重要。 – 2010-02-26 10:10:05

回答

2

在CLR和库中已经进行了优化(例如启动速度更快),但很难说如果您会看到任何实际的速度差异。 字符串操作意味着内存分配意味着垃圾收集器的压力,所以它在3.5中应该会更好一些。

只有通过测试和测量才能得到真正的答案,对不起。

1

速度明智的 - 也许(但需注意的.Net 3.5比1.1,因为它包含了新的技术,如LINQ,WCF,CF,WPF等更大)

部署 - .NET 3.5会自从最新的Windows操作系统已经有.Net框架3.0+作为其系统上的一个功能。

Maintenance \ Future Considerations - .net 3.5。现在在.Net 3.5上进行迁移会更好,所以如果您需要对软件进行更改,您可以获得更多可用的新技术...

+0

是的。但由于我不被允许使用WCF和LINQ(而且这对我的解决方案毕竟有用),我想知道这有什么好处。感谢您的回复。 – Txugo 2010-02-26 10:29:22

+0

如果你编译3。5,你为什么不被允许使用LINQ?听起来像来自高层管理人员的FUD。 – mxmissile 2010-02-26 14:27:14

+0

我无法确认或否认:-) – Txugo 2010-03-01 10:27:28

1

如果您不更改代码,请使用新的功能,如通用集合,它不会有太大的改变。而且大多数较新的操作系统都没有安装.NET 1或1.1,并且使用.NET 2运行时(运行时也使用3.5)来运行代码。因此,您仍然应该从运行时更新版本中可能已经增强的更好的jitting,interop等中受益。

对于正常的应用程序,可以在配置文件中指定应该使用哪个框架版本,以便即使对于1/1.1应用程序也可以强制使用.NET 2运行时。不过,不知道这是如何以及如何为COM激活的东西工作。

+0

正是。这就是为什么我说我没有从1.1(不使用2.0功能)更改代码,也没有使用WCF(.NET 3.0)或Linq(3.5)。所以我不明白好处。而3.5中的CLR可以运行1.1程序集,但是如果我将它编译为3.5(实际上2.0),我认为它没有任何区别。我搜索到的文档和评论只能说“你应该还是受益”,但没有人解释如何或为什么。谢谢你的评论。 – Txugo 2010-02-26 11:12:49

1

加载程序集和JIT编译代码已经在.NET 1.0中进行了大量优化。非常重要,因为它直接影响任何.NET应用程序的启动时间。 2.0 CLR并没有显着改善这一点。

然而,在.NET 3.5 SP1中有更新的安全策略。装配位置受信任时不再检查装配的强名称。确切的规则是documented here。这可以使热启动速度提高多达40%。这是一个乐观的数字,YMMV。