2012-04-18 91 views
0
If Not m_Batchs Is Nothing Then 
     For Each Batch In m_Batchs 
      newListItem = lstWsJobs.Items.Add(Batch.Id.ToString) 
      With newListItem 
       .Name = Batch.Id.ToString() 
       .SubItems.Add(Batch.JobId.ToString) 
       .SubItems.Add(Batch.Complete.ToString) 
       .SubItems.Add(Batch.User) 
       .SubItems.Add(Batch.Time.ToString) 
      End With 
     Next 
    End If 

私はこのリストビュー(これはうまくいきます)を持っていて、特定の順序、すなわち日付、アイデンティティなどで効率的な方法を見つけたいと思います。特定の順序でリストビューにアイテムを追加する

私はlinqを使うことができますが、私はこれが非効率的であると理解しています。 m_batchsがオブジェクトの大きなリストである場合、私はこのリストを何度も繰り返します(linqがシーンの背後でオブジェクトコレクションをループするため)。

アイデア?

答えて

0

LINQは一般的に非効率的ではありませんが、ほとんどの場合、読みやすく、実装、変更、拡張が容易です。また、1つのアプローチが1000回の反復で1ミリ秒高速化すれば、それは本当に重要ですか?

だから私はBatchがカスタムタイプであるとm_BatchsList<Batch>であることを前提としています

// order by date 
var query = m_Batchs.OrderBy(b => b.Time); 
// order by identity 
query = m_Batchs.OrderBy(b => b.ID); 
// ... 

は、この単純なLINQクエリおよびカスタム実装の違いを測定します。

編集:申し訳ありませんが、それはC#

Dim batchByTime = m_Batchs.OrderBy(Function(b) b.Time); 
Dim batchByID = m_Batchs.OrderBy(Function(b) b.ID); 
+0

だったが、あなたにティムをありがとうございます。はい、あなたの前提は正しいです。私は、linqはフィルターとして、ソーターよりももっと多く使用されていましたが。これが私たちの大きなコレクション/リストでうまくいくかどうかをすぐに見ていきます。 – Richard

+0

LINQはデバッグモードで実行中に悪化することに注意してください。常にリリースモードでLINQパフォーマンステストを実行します。 – pingoo

関連する問題