我在WinForm上使用UltraCombo控件(Infragistics v10.3)。代码是c#并构建在.Net 4.0上。我有一个58,000项的列表,我绑定到控件。这是代码:
在表单加载事件中:
for (int i = 0; i < 58000; i++)
{
Requester r = new Requester();
r.AccountId = i;
r.AccountNumber = i.ToString();
r.ContactGroupId = i;
r.Deactivated = false;
r.DefaultContactId = i;
r.FacilityId = i;
r.PriceModelId = i;
r.RequesterId = i;
r.RequesterName = Guid.NewGuid().ToString();
r.RequesterTypeId = i;
requesters.Add(r);
}
在控件的BeforeDropDown事件中:
if (!_requestersLoaded)
{
var currentRequester = string.Empty;
requesterUltraCombo.DataSource = requesters.OrderBy(t => t.RequesterName).ToList<Requester>();
requesterUltraCombo.Text = currentRequester;
}
请求者类本身非常简单:
public class Requester
{
public Requester(){}
public int AccountId { get; set; }
public string AccountNumber { get; set; }
public int ContactGroupId { get; set; }
public bool Deactivated { get; set; }
public int? DefaultContactId { get; set; }
public int? FacilityId { get; set; }
public int PriceModelId { get; set; }
public int RequesterId { get; set; }
public string RequesterName { get; set; }
public int RequesterTypeId { get; set; }
}
BeforeDropdown事件中的代码在Pentium i5 2.6 GHz上执行大约5-6秒,并且亲和力设置为仅1核。出于这个问题的目的,这种性能水平是完全可以接受的。
在双Pentium D 3 GHz上,相同的代码在20-25秒内执行,并且两个CPU都设置了相关性。当亲和力设置为仅1个CPU时,它甚至更慢。
我认为差异与CPU有关,但是,我不确定CPU的哪些方面可能是这里的主要原因?这不是我的专业领域。
它是Pentium D上缓慢的缓存吗? 是不是Pentium D没有单独的数据和指令缓存? Pentium D不使用超线程吗? 它是否是这些方面的一些组合,还有其他方面?我认为情况可能就是这样。