我编写了一个代码来处理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做这个的想法?
答案 0 :(得分:0)
在多个执行线程之间共享一个NHibernate会话绝对不是一个好主意。尝试使用nhibernate profiler查找瓶颈或切换到StatelessSession
而不是