性能优化——实现并发构建器模式



我在代码中实现了一个复杂的构建器模式,类似于这个URL中的最后一个。构造器的目的是基于对象属性构造SQL查询。

之类的
PersonQueryBuilder person =
new PersonQueryBuilder.Builder()
.BuildAddressClause(request.PersonInformation.Address)
.BuildBankAccountClause(request.PersonInformation.BankAccountInformation)
.BuildAClause(request.Something)
.BuildBClause(request.Something)
.build();

我在想,如果我可以用

来运行它们,而不是顺序执行这些构建器逻辑,这会更有效。
TaskFactory.StartNew(() =>
{
// Create builder here so that the builder pattern stays the same, but the process runs concurrently.
});

是否有任何方法/示例可以演示类似的行为?

首先,在最近的c#中,您使用Task.Run(...)而不是TaskFactory.StartNew(...)来启动运行该函数的后台任务。然而,这不会使构建器并行运行,对于cpu绑定工作的并行化(我假设构建器不执行任何磁盘/网络I/O),您使用Parallel类,Parallel.Invoke似乎适合您的情况。

然而,当使用并行类时,你需要确保不同的构建器不会改变相同的状态,例如,不要操纵代表SQL查询的共享StringBuilder。如果你需要改变相同的状态,你可以在需要的地方为线程安全引入锁,但是要确保并行化是合理的。

最新更新