Winform 系统调优

简介:   小白鼠条件: 以常见的树形结构树为例: 有两张结构相同的表table1(1w数据),table2 (2w数据),需要对比数据差异。 表结构如下:       id , parent_id, col1, col2, col3   常规做法是:            常规思想:        循环table1, 一、充分利用缓存效果; 操作系统的高速缓存、磁盘缓存等等,都是利用混存技术来提高系统响应速度。
 
小白鼠条件:
以常见的树形结构树为例:
有两张结构相同的表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 呢? 任何一个小的性能改进就会被无限放大。
 
 
 
目录
相关文章
|
16天前
|
网络协议 Linux Android开发
深入探索Android系统架构与性能优化
本文旨在为读者提供一个全面的视角,以理解Android系统的架构及其关键组件。我们将探讨Android的发展历程、核心特性以及如何通过有效的策略来提升应用的性能和用户体验。本文不包含常规的技术细节,而是聚焦于系统架构层面的深入分析,以及针对开发者的实际优化建议。
29 1
|
4月前
|
缓存 算法 Java
聚焦Java应用程序的内存管理和调优技巧
在现代软件开发中,性能优化对提升用户体验和系统稳定性至关重要。本文聚焦Java应用程序的内存管理和调优技巧。从理解Java内存模型入手,深入探讨堆内存的管理与优化,揭示如何避免内存泄漏,利用工具检测问题,并介绍高效字符串处理及数据结构选择的方法。同时,解析垃圾回收机制及其调优策略,包括不同回收器的选择与配置。此外,还介绍了调整堆大小、运用对象池和缓存技术等高级技巧。通过这些方法,开发者能有效提升应用性能和稳定性。
49 1
|
4月前
|
开发者 数据库 虚拟化
Xamarin 应用性能优化策略大揭秘,从代码到界面再到数据访问,全面提升应用性能,快来围观!
【8月更文挑战第31天】在 Xamarin 跨平台移动应用开发中,性能优化至关重要。代码优化是基础,应避免不必要的计算与内存分配,如减少循环中的对象创建及合理使用数据结构。界面设计上需注意简化布局、减少特效并启用虚拟化以提升响应速度。数据访问方面,优化数据库查询和网络请求可显著改善性能。Xamarin Profiler 等工具还可帮助开发者实时监控并优化应用表现,从而打造流畅高效的用户体验。
56 0
|
4月前
|
监控 算法 测试技术
项目优化:对已有项目进行性能分析和优化。
项目优化:对已有项目进行性能分析和优化。
86 0
|
XML Java Go
eclipse开发工具性能优化设置方法
eclipse开发工具性能优化设置方法
735 0
eclipse开发工具性能优化设置方法
|
Android开发
Android开发必备!性能优化系列:启动优化
Android开发必备!性能优化系列:启动优化
Android开发必备!性能优化系列:启动优化
|
运维 监控 测试技术
移动端性能优化系列—启动速度
移动端性能对用户体验、留存有着至关重要的影响,作为开发者是不是被这样吐槽过,“这个 APP 怎么这么大?”、“怎么一直在 APP 封面图转悠,点不进去”、“进入详情效果有些卡”、“用 4G 使用你们的 APP,我的流量有点不够啊”等等,这些问题都直观反映出,一个体验良好的应用,只有功能健全还不够。
移动端性能优化系列—启动速度
|
XML Java Shell
【Android 性能优化】应用启动优化 ( 启动优化项目 | 界面启动时间 | 启动优化项目 | 方法追踪 MethodTracing )
【Android 性能优化】应用启动优化 ( 启动优化项目 | 界面启动时间 | 启动优化项目 | 方法追踪 MethodTracing )
196 0
|
安全 Docker Windows
5个要点,告诉您为何要将旧版 Windows 应用程序进行现代化改造
在短短一年多的时间里,Microsoft 对 Windows Server 2008 的支持即将结束。如果没有做出适当的规划,连锁反应可能会影响您的业务。维护成本将急剧上升,而安全性和合规性风险将在没有定期补丁的情况下增加。
2593 0