当前位置:
首页 >
Winform 系统调优
发布时间:2025/5/22
80
豆豆
生活随笔
收集整理的这篇文章主要介绍了
Winform 系统调优
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
小白鼠条件: 以常见的树形结构树为例: 有两张结构相同的表table1(1w数据),table2 (2w数据),需要对比数据差异。 表结构如下:id , parent_id, col1, col2, col3 常规做法是: 常规思想: 循环table1, 一、充分利用缓存效果; 操作系统的高速缓存、磁盘缓存等等,都是利用混存技术来提高系统响应速度。充分利用缓存可以大幅提高系统的响应时间。口说无凭,还是找一个小白鼠来看看: 现有系统中有很多地方有“刷新”的菜单,这个就是为了刷新缓存数据预留。 一个现实的事例就是一个报表系统优化后,采用数据缓存后。用4-5小时不能出现的数据,现在用几十分钟就能出所有的数据了。 单独使用dt.Select(conditinos) 进行数据过滤时,并不能成为性能的瓶颈,但是如何频繁调用 dt.Select(condtions) 则需要注意对性能的影响了。 曾经遇到过这样的数据, 由于其他原因,需要把当前符合条件的数据全部读取出来(10w 左右的数据),由于数据结构中已经设定了 tree 的模型,所以需要把datatable 转换成 tree ,这样需要不断的循环递归查找所有子节点,类似如下: Demo: Foreach (DataRow parent in dt.Rows) { String conditions = String.Format(“parent_id = {0}”, parent[“id”].ToString()); DataRow[] rowsChild = dt.Select(conditions); Foreach(DataRow child in rowsChild) { // do any thing you want.
}
} 你会发现,此处代码将严重影响性能。 解决办法,直接在外面用 缓存,创建一个 Hashtable <parent_id, DataRow> 于是内层的循环就可以直接在 Hashtable 中找数据,这样可以大大提高相应的速度。 二、进行预处理过程; 观察后续处理过程,增加预处理过程,将频繁处理的数据进行预处理。理论同上。 三、大数据量分“页”处理 来源于网页制作过程中的思想。现在系统中有很多地方有它的影子,操作系统里的页,数据库的事物处理过程,都是将大化小,小化了。 四、了解编程语言细节差异 五、良好的架构 对于系统中的设计,需要尽量避免UI层去了解数据结构方面的问题。比如: 设计一:良好的设计 Public class Item { Private int mID = 0; /// Just for Business layer Public Item(DataRow row) { This.mID = ((IConvertible)row[“id”]).ToInt32(null);
} Public int ID { Get { Return this.mID;
} Set { This.mID = value;
}
}
} 设计二: Public class Item { Private DataRow mData= 0; /// Just for Business layer Public Item(DataRow row) { This.mData = row;
} Public int Data { Get { Return This.mData
} Set { This.mData = value;
}
}
} 这里推荐使用一,在二种,已经暴露了数据库实现的细节问题了。在 UI 层操作使用的时候必须知道每个 Data 里面所对应的表结构,否则就会出现问题。而一中可以建立对应关系,一个 Column一个属性,这样直接操作 Item.ID 就可以了。而且以后使用时也比较方便。 Ps: 设计 二 也可以引起性能问题: Public int Layer { Get { Return mData.IsNull(“Layer”) ? 0 : Convert.ToInt32(mData[“layer”]);
}
} 虽然一个简单的 Item.Layer 也可能造成系统性能的瓶颈。调用次数少则可以,但是如何调用这个属性进行判断时候需要达到 100w 或则达到了 1000w 呢? 任何一个小的性能改进就会被无限放大。
}
} 你会发现,此处代码将严重影响性能。 解决办法,直接在外面用 缓存,创建一个 Hashtable <parent_id, DataRow> 于是内层的循环就可以直接在 Hashtable 中找数据,这样可以大大提高相应的速度。 二、进行预处理过程; 观察后续处理过程,增加预处理过程,将频繁处理的数据进行预处理。理论同上。 三、大数据量分“页”处理 来源于网页制作过程中的思想。现在系统中有很多地方有它的影子,操作系统里的页,数据库的事物处理过程,都是将大化小,小化了。 四、了解编程语言细节差异 五、良好的架构 对于系统中的设计,需要尽量避免UI层去了解数据结构方面的问题。比如: 设计一:良好的设计 Public class Item { Private int mID = 0; /// Just for Business layer Public Item(DataRow row) { This.mID = ((IConvertible)row[“id”]).ToInt32(null);
} Public int ID { Get { Return this.mID;
} Set { This.mID = value;
}
}
} 设计二: Public class Item { Private DataRow mData= 0; /// Just for Business layer Public Item(DataRow row) { This.mData = row;
} Public int Data { Get { Return This.mData
} Set { This.mData = value;
}
}
} 这里推荐使用一,在二种,已经暴露了数据库实现的细节问题了。在 UI 层操作使用的时候必须知道每个 Data 里面所对应的表结构,否则就会出现问题。而一中可以建立对应关系,一个 Column一个属性,这样直接操作 Item.ID 就可以了。而且以后使用时也比较方便。 Ps: 设计 二 也可以引起性能问题: Public int Layer { Get { Return mData.IsNull(“Layer”) ? 0 : Convert.ToInt32(mData[“layer”]);
}
} 虽然一个简单的 Item.Layer 也可能造成系统性能的瓶颈。调用次数少则可以,但是如何调用这个属性进行判断时候需要达到 100w 或则达到了 1000w 呢? 任何一个小的性能改进就会被无限放大。
总结
以上是生活随笔为你收集整理的Winform 系统调优的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: DataGridView新特色、常用操作
- 下一篇: 解析网站发布系统利用ASP生成静态页面的