2010-02-26 89 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。