zoukankan      html  css  js  c++  java
  • 约定编程之 Dictionary 的 String 类型的 Key

    Dictionary 在程序中被大量应用,Key 为 string 类型的应用很多,key 在应用时基本都是按照不区分大小写来取值。
    例:
    public void GetValue(string keyString)
    {
     var key=keyString.ToLower();
     return dict[key];
    }

    如果 GetValue 被频繁调用,则在性能分析器中可以看到 String.ToLower() 占用CPU时间比较长。

    开始的目的是:提高程序的容错性,因此在进行取值时都会进行转换。

    这样就造成了:
    1.越是接近底层 ToLower 和 Equals 方法,越是被频繁调用,从面影响性能。
    2.ToLower 和 Equals 的方法到处飘散,容易出错

    解决方法:
    1.用约定,约定 Dictionary string 类型 Key 在写入时转换为 大写转小写
    毕竟写入的程序次数不多


    为什么:
    1.什么时间从 Dictionary 中取值,根据当前上下文的状况基本上可以确定在取值是否需要转换
    2.减少 ToLower 和 Equals 出现次数
    3.提高性能

    此方法已经在项目组中实践,郊果非常好

    ----------------------------------- http://www.cnblogs.com/rock_chen/
  • 相关阅读:
    VSCode前端 插件
    restframework 分页组件、响应器
    restframework 解析器、渲染器、url控制组件
    __getattr__
    apply和call的用法
    继承
    原型的指向改变
    局部变量变全局变量
    构造函数和实例对象和原型对象之间的关系
    _proto_和prototype
  • 原文地址:https://www.cnblogs.com/rock_chen/p/2861375.html
Copyright © 2011-2022 走看看