我正在努力改进我们在这里工作的现有winforms项目。 我现在有点想法,所以我想我会在这里泄漏一些细节,看看人们可以提出什么建议。
表格的作用如下:
我们有一个列表(来自数据库),它使用完全限定的命名空间定义要创建的控件。 控件(用户控件,基本上)依次由反射创建,并最终添加到表单上的面板中。 现在,每个控件都可以包含更多内容,最后是控件的树状层次结构。
每个控件都有自己的初始化,最后,A DataSet作为DataSource被赋予表单(和所有控件), 添加数据绑定并在每个数据绑定上进行。
特别是,在某些情况下,我们将特定的ROW绑定到控件,而不是DataTable / Set。 因此,期望BindingManager Position调用以确定确切的行等。
使用约30个用户控件,我们可以获得大约10秒的可爱性能来打开新表单, DataSet几乎不包含任何数据。绑定大约需要3-4秒。
在复杂的数据状态下,我们谈论的是30-40秒的开放时间, 绑定约占一半时间。
现在,这是非常简化的,我敢打赌,我们有很多自己的代码导致一些减速, 我已经将它描述为了解一些景点。
但表现的主要问题似乎是约束力。
我很想听听有关如何深入了解此类性能问题的一些建议, 特别是一种对数百个绑定的混乱进行排序的方法。
答案 0 :(得分:1)
是从db获取部分的所有设置的时间吗?
反射 - >反射发射,性能,但编码是皮塔饼。
如何将构建过程分成2个: 1st仅仅是构建所有项目,数据项将是未绑定/空的
然后下一轮是数据绑定部分。
这样做,假设数据绑定很慢,至少ppl可以看到屏幕上弹出的东西。 你可以给出数据绑定总是很糟糕的理由/借口,或者你可以分别研究这部分问题。