2009-06-19 104 views
0

我將我們的項目從.NET 2.0轉換爲3.5,並且正在尋找可以使用3.5框架完成的優化。與數據結構中的3.5一樣,我可以做些什麼?除了LINQ to SQL之外,還有關於使用DataAccess的任何建議。 任何建議/指針會很好。我沒有看到任何具體的優化,只是一個將軍。我也使用VB.NET :(從2.0轉換到3.5後的.NET 3.5優化

+1

您可以做出的最大單一優化是切換到C#。 – Randolpho 2009-06-19 03:06:01

回答

2

這個鏈接幾乎給你所有的新的VB 9。0特點一目瞭然:

http://msdn.microsoft.com/en-us/library/ms364068.aspx

  • 隱式類型的局部變量
  • 對象和數組的初始化
  • 匿名類型
  • 深XML支持
  • 查詢悟擴展
  • 方法和Lambda表達式
  • 種可空類型
  • 寬鬆的代表
3

我不完全相信你通過優化的意思。你能澄清一點?

3.5框架和相應的VB.Net編譯器是不是這麼多優化,但是更多地涉及關於LINQ(語言集成查詢)的概念,它是定義通用查詢語言的一種方式,有點類似於SQL,可用於各種不同的數據源。有一份學生名單,並希望獲得具有特定名稱的名單。在LINQ之前,您可以寫下如下內容:

Dim list As New List<Student>() 
For Each cur in col 
    if cur.Name = SomeName Then 
    list.Add(cur) 
    End If 
Next 

LINQ通過讓你用以下

Dim result = From cur in col Where cur.Name = SomeName 
4

這是C#有點依賴,因爲你不能在VB.Net寫迭代器大大簡化了這一點。但對我來說,性能改進的一大改進是Iterator +擴展方法+ lambda表達式組合。迭代器也可以在.Net 2.0中使用,但是當您將它們與IEnumerable擴展方法結合使用時,您會突然擁有一個非常強大的優化工具。

例如,假設您有代碼讀取文件並獲取包含特定文本的所有行。在.Net 2.0中,您可以使用File.ReadAllLines或迭代流讀取器。 .NET 3.5中,你可以用一個迭代器換流閱讀器和編寫代碼:

ReadLines(@"C:\MyFile.txt").Where(l => l.Contains("search text")); 

現在,這是不是所有的特殊的,因爲你可以編寫代碼來獲得接近它的.Net 2.0。但真正很酷的事情是,你可以繼續添加過濾器:

var query = ReadLines(@"C:\MyFile.txt") 
          .Where(l => l.Contains("search text")) 
          .Select(l => int.Parse(l.SubStrin(5,8)) 
          .Where(i => i > 10); 

int sum=0; 
foreach (int value in query) 
{ 
    sum += value; 
} 

突擊測驗—多少次將這些代碼遍歷文件的結果嗎?答案恰恰是一個。添加新的.Where().Select()不會導致它再次循環播放結果。相反,它會延遲執行,爲您的枚舉創建一種管道。

要在.Net 2.0中獲得類似的性能,您必須編寫一個更長的函數,包括打開和讀取文件,有更復雜的類來實現IEnumerable,或者廣泛使用自定義委託大多數程序員都不會理解。

這使您能夠以非常簡單且非常可重用的方式將讀取文件的代碼抽象出來,以便現在的語言有助於編寫高效的代碼。有趣的部分是,你可以使用可以從VB.Net中使用這個:你只需要在某個地方有一個C#程序集來保存你想寫的迭代器,然後你的VB.Net代碼如下所示:

Dim query = ReadLines("C:\MyFile.txt") _ 
         .Where(Function(l) l.Contains("search text")) _ 
         .Select(Function(l) Integer.Parse(l.SubString(5,8)) _ 
         .Where(Function(i) i > 10) 

Dim sum As Integer = 0 
For Each value As Integer In query 
    sum += value 
Next value 
+0

這真的很棒,謝謝 – Greens 2009-06-19 20:57:52

1

VB 9有一個很酷的XML原始類型,可以讓你做的事:

Dim book As XElement = _ 
    <book category="fiction" isbn=<%= isbnNumber %>> 
     <modifiedDate><%= modifiedDate %></modifiedDate> 
    </book> 

這是很酷! (代碼取自msdn

+0

是的,這很酷。這是VB的唯一功能(語法糖),我希望在C# – 2009-06-19 05:48:02

0

如果您在2.0中使用遠程處理或序列化,您可以立即將其切換到WCF遠程處理/序列化,並且從我讀過的內容中可以看到很好的性能提升。

+0

好男人謝謝 – Greens 2009-06-19 20:57:05