• CSLA学习之数据遍历优化——静态变量使用(单例实现)


          最近在用CSLA做数据管理的功能。有个功能需要查看一个表b1,但一些字段的信息要从表b2中获取,这就需要每次获取b1的一行值就需要

    遍历b2的所有集合。刚开始的时候是这样写的:
            /// <summary>
            /// 获取测点名称和类别
            /// </summary>
            /// <param name="name">测点名称</param>
            private void SetNameAndType(string name)
            {
                //设置设备名和型号
                if (name != null)
                {
                    MeasurePntList meaLst=MeasurePntList.Get();
                    foreach (MeasurePnt temp in meaLst)
                    {
                        if (temp.Name == name)
                        {
                            _measureType = temp.MeasureType;
                            _PnId = temp.PnId;
                        }
                    }
                }
    这就导致每次都需要调用MeasurePntList.Get()方法来取值。效率很低,最后我改成如下:

    在MeasurePntList 中定义一个静态实例,相当于只取一次,只有有变化的时候才会重新获取:
    private static MeasurePntList _instance = null;
            /// <summary>
            /// 静态变量
            /// </summary>
            public static MeasurePntList Instance
            {
                get
                {
                    if (_instance == null)
                        _instance = Get();
                    return _instance;
                }
            }
    之后把上面代码直接改为:
             /// <summary>
            /// 获取测点名称和类别
            /// </summary>
            /// <param name="name">测点名称</param>
            private void SetNameAndType(string name)
            {
                //设置设备名和型号
                if (name != null)
                {
                    //调用静态变量,以免重复获取大量数据,影像数

    据访问速度
                    foreach (MeasurePnt temp in

    MeasurePntList.Instance)
                    {
                        if (temp.Name == name)
                        {
                            _measureType = temp.MeasureType;
                            _PnId = temp.PnId;
                        }
                    }
                }
            }
    这样就大大提高了效率……

  • 相关阅读:
    分区硬盘Lvm 折腾小记
    添加源ubuntu_x64 安装 Adobe Reader
    停止标记NYOJ 一个简单的数学题 南工330停止标记
    读控制台HDU 1788 Chinese remainder theorem again 数论读控制台
    对象方法PHP中魔术方法的用法对象方法
    指针修饰C语言const修饰符探秘指针修饰
    输入整数角谷步数 你听说过角谷猜想吗? 任意的正整数,比如 5, 我们从它开始,如下规则计算: 如果是偶数,则除以2,如果是奇数,则乘以3再加1. 如此循环,最终必会得到“1” !输入整数
    根节点左边POJ 1456 Supermarket根节点左边
    代码功能【OpenGL】初识OpenGL4.0代码功能
    终点节点NYOJ115 城市平乱终点节点
  • 原文地址:https://www.cnblogs.com/wylaok/p/2794805.html
Copyright © 2020-2023  润新知