zoukankan      html  css  js  c++  java
  • 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;
                        }
                    }
                }
            }
    这样就大大提高了效率……

  • 相关阅读:
    Java架构师必知:什么是单点登录,主要会应用于哪些场景?
    15年老程序员首次分享,年薪200万是怎么做到的
    架构师进阶之路,什么人适合当架构师
    阿里大咖首次分享:软件工程危机真来了?
    用【快餐店】理解日均亿级高并发分布式架构,秒懂!
    Semi-supervised learning for Text Classification by Layer Partitioning
    Ordered Neurons: Integrating Tree Structures Into Recurrent Neural Networks
    Deep Learning Recommendation Model for Personalization and Recommendation Systems
    条件随机场
    隐马尔可夫模型
  • 原文地址:https://www.cnblogs.com/wylaok/p/2794805.html
Copyright © 2011-2022 走看看