0

Azure サーバー上の一部のデータをクランチするコードを作成しました。初めてコードを書いたとき、それは線形の For Each ループであり、完了するまでに永遠に時間がかかりました。次のように Parallel を使用してコードを改善しました。

Parallel.ForEach(users, currentUser =>
  {
     int number = myrollup.CountFilmsForUsers(currentUser.UserId,distort,tend).Result;
     lock(myrollup)
      {
        var record = new UserAnalytics();
        { 
          UserId = currentUser.UserId,
          UserFName = currentUser.FirstName,
          UserLName = currentUser.LastName,
         };
        session.SaveOrUpdate(record);
       }
    });

この並列ループは 9 分で完了しますが、Producer / Consumer パターンを使用してこれをさらに改善したいと考えています。C# で Nhibernate を使用してこれを行う方法についてのアイデアはありますか?

4

1 に答える 1

0

複数の実行スレッド間で 1 つの NHibernate セッションを共有することは絶対にお勧めできません。nhibernate プロファイラーを使用してボトルネックを見つけるか、StatelessSession代わりに切り替えてください

于 2013-01-04T22:49:01.690 に答える