- 积分
- 13004
- 明经币
- 个
- 注册时间
- 2015-8-18
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 你有种再说一遍 于 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 |
|