明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 71|回复: 0

[运行时] cad.net 扩展数据和扩展字典

[复制链接]
发表于 昨天 17:21 | 显示全部楼层 |阅读模式
本帖最后由 你有种再说一遍 于 2025-3-12 17:46 编辑

# 字典
这个东西貌似大家都已经懂了.

原本尼克劳斯的博客例子不太行,
所以我更改了一番,然后添油加醋由加入了扩展字典.
还看到别人博客不会算扩展字典的容量,
其实我之前也很迷,不过有天好像打通了任督二脉.
大概是看了Java的hashMap原理的精心设计之后...
https://www.cnblogs.com/JJBox/p/18762375


# 加载和卸载
对了,我还重构了加载和卸载.
把代码精简了,显得更好入口了.
利用了双缓存机制实现,
https://www.cnblogs.com/JJBox/p/13833350.html


# 代码优化
如何把代码变得容易读:
1,尽可能不写循环,例如list.FirstOrDefault(a => a==1);
2,非要写循环的话,有些需要注意事项.
一个for只做一件事,
但是你经常会遇到需要过滤然后跳过.
那么就先利用Linq的Where过滤对象,再for,
这样就可以减少for中使用continue了.

# 热点优化
大家可能不懂什么叫热点优化.
如果击中同一个概率高,那么我们就改写代码,
让它优先击中这个类型.
例如:
bool test(int nun) {
   if (num == 4) {
       return true;
   }
   foreach(var item in list)
      if (num == item)
         return true;
   }
   return false;
}

你想想一万次循环,要判断5次if就有5万次了.
如果把后面的if拉到前面来,就只有1万次if.

实际上JIT会动态收集所需信息,
在运行时候会修改你的代码,以提高运行效率,
这个操作叫JIT特化,意在提高CPU的分支预测能力.

xx
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-3-13 03:46 , Processed in 0.141869 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表