我有D2程序,它的当前形式是单线程,并且对于该程序外循环的每次迭代,在内循环中调用相同的纯函数大约10到100次.呼叫之间没有数据依赖性,即没有呼叫使用来自任何其他呼叫的结果.总的来说,这个功能被称为数百万次,是我程序中的主要瓶颈.这些参数几乎每次都是唯一的,因此缓存无济于事.
乍一看,这似乎是并行化的完美候选者.唯一的问题是该函数每次调用只需要大约3微秒,远低于创建新线程的延迟,并且远远高于将任务添加到任务池的开销(意味着,获取互斥锁,分配内存到保存有关任务的信息,处理可能的任务池队列争用等.有没有什么好方法可以利用这种细粒度的并行性?