小白鼠条件:
以常见的树形结构树为例:
有两张结构相同的表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 呢? 任何一个小的性能改进就会被无限放大。

Winform 系统调优相关推荐

  1. linux @webserviceclient 访问超时_Linux系统调优

    linux系统linux系统安装完毕后,首先要做的就是系统调优,这样会提高系统的使用效率,接下来为大家介绍一下linux系统调优方法.linuxlinux系统安装完毕后,首先要做的就是系统调优,这样会 ...

  2. alsa 测试 linux_Linux低延迟服务器系统调优

    最近做了一些系统和网络调优相关的测试,达到了期望的效果,有些感悟.同时,我也发现知乎上对Linux服务器低延迟技术的讨论比较欠缺(满嘴高并发现象):或者对现今cpu + 网卡的低延迟潜力认识不足(动辄 ...

  3. Sybase数据库应用系统调优的五大领域

    Sybase数据库应用系统调优的五大领域 2011/3/14/13:49来源:慧聪it网 本 文以"某大型商业银行的网上银行系统"这一很具有典型意义的企业级大型Sybase数据库应 ...

  4. Linux 系统调优相关工具

    内容: 11.1 系统调优概述 11.2 查看 CPU 负载相关工具,找出系统中使用 CPU 最多的进程 11.3 查看 Memory 运行状态相关工具,找出系统中使用内存最多的进程 11.4 查看 ...

  5. Linux系统调优详解(十二)——IO调优之磁盘测速

    今天继续给大家介绍Linux运维相关知识,本文主要内容是IO调优,测试对磁盘的速度. 在进行Linux系统调优的时候,我们需要对当前系统的硬盘读写速度进行测试.此时,我们可以选择使用hdparm命令或 ...

  6. 关于 Linux中系统调优的一些笔记

    写在前面 推送的的邮件里看到有大佬讲的公共课,听了之后这里整理学习笔记. 因为是公开课,所以讲的很浅,没接触过,这里做为了解,长长见识. 博文内容包括 系统调优原理概述 如何检测系统的性能瓶颈 如何进 ...

  7. linux内核 cpu io等待,linux系统调优之IO、cpu

    首先先要再次强调一个概念:系统调优的目的不是怎样去吧那一部分做的特别优化.而是整体的全局的考虑.性能优化是为了找到系统的瓶颈并且想办法提高瓶颈最好能够去除.(个人认为万事皆有利弊,在计算机的世界里同样 ...

  8. Linux云计算架构-系统调优【CPU、IO、网络、内核参数调优】

    文章目录 Linux云计算架构-系统调优[CPU.IO.网络.内核参数调优] 1. CPU调优 2. IO调优 3. 网络调优 3.1 网络冗余(主备模式) 3.2 负载均衡模式 4. 内核参数调优 ...

  9. 51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程(高俊峰)

    51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程 第一课 Linux运维经验分享与思路 1.一般把主机名,写到hosts下    127.0.0.1    hostname,因为 ...

最新文章

  1. blender动画全面学习教程
  2. 我的世界java下载1.13_Minecraft Java版 1.13.1-pre2 发布
  3. 「干货」谷歌大脑:元学习最新进展与挑战(40 PPT下载)
  4. 福田车载无线充电器方案开发设计_过年自驾回家,带上优胜仕车载无线充电器,一放即充导航无忧...
  5. BLE控制器之物理层特性
  6. oracle查询表实际大小,简要分析估算oracle表的大小
  7. anaconda在ubuntu19.10下面安装python3.6和python2.7+更换国内源+一键切换配置
  8. CSDN光合计划-纯干货-推荐几个Java全系列学习教程
  9. python2.7虚拟环境virtualenv安装及使用
  10. 快讯:Oracle 19c 新特性及官方文档抢鲜下载
  11. markdown首行空两格
  12. Atitit GRASP(General Responsibility Assignment Software Patterns),中文名称为“通用职责分配软件模式”
  13. 中断扫描方式子程序c语言,单片机原理及应用(C语言版) 第9章 节 单片机系统配置及接口.ppt...
  14. find linux 指定后缀_Linux下备份目录下指定的某些后缀文件
  15. 2018第九届蓝桥杯B组决赛题解第四题 调手表(BFS)
  16. 中国智能电饭煲行业市场供需与战略研究报告
  17. k8s多节点master部署
  18. 网络聊天室(Java)
  19. 趋势科技如何卸载?卸载时总提示要输入密码
  20. Carla设置传感器

热门文章

  1. K:hash(哈希)碰撞攻击
  2. 以脚本方式直接执行修改密码的passwd命令
  3. Storm-源码分析-EventManager (backtype.storm.event)
  4. Dijkstra算法的c++实现
  5. Apache与IIS的优劣对比点点评
  6. [Music]A Place Nearby
  7. php 对象存储过程,从php中的存储过程中获取价值
  8. 谈一谈:抽象工厂+反射+配置文件 实现数据访问程序
  9. ASP.NET页面通过URL传递参数(一)(转载)
  10. linux命令chown