我在C#中设置了以下linq查询。 CompDotPinNamePinDict字典的类型为<string, object>
,对象具有名为UniqueNetNames的List<string>
。
我正在PCB上构建一组设备引脚,我们称之为网络。网络本质上是将器件引脚连接在一起的导线。
平均pin字典将包含大约80k条目。 平均UniqueNetName列表将包含大约4个条目。
以下是围绕linq查询的代码:
var uniqueName = dr[0].ToString().ToUpper().Trim();
//Get all of the pins with the associated net names
// BUG - Following .Contains() is 37% of import processing time. Needs optimized.
var values = DataStore.OriginalSolution.CompDotPinNamePinDic.Where(x => uniqueName == x.Key ||
x.Value.UniqueNetNames.Contains(uniqueName, StringComparer.InvariantCultureIgnoreCase));
foreach (var pin in values)
{
newNet.AddPin(pin.Value);
}
//If no pins were found, alert the user
if(!newNet.PinListDic.Any())
{
errors.Add("SRTool:Missing pins in " + newNet.UniqueNetName + "(FFI Net Name). Net not created.");
continue;
}
之后,我会获取values
引脚列表并继续创建net
。在我的所有导入功能中,49.7%的处理器时间用于上述linq查询。
有人能想到从这本字典中提取一组引脚的更好方法吗?