做透明头像的网站,html加入wordpress,河南一情况,上海 企业文章目录 前言一、业务逻辑优化技巧二、Unity3d中C#的底层原理三、List底层源码剖析四、Dictionary底层源码剖析五、浮点数的精度问题六、委托、事件、装箱、拆箱七、算法总结 前言
本文旨在总结某一概念的性质#xff0c;并引出相关的技术要点。如果读者希望深入了解相关技术… 文章目录 前言一、业务逻辑优化技巧二、Unity3d中C#的底层原理三、List底层源码剖析四、Dictionary底层源码剖析五、浮点数的精度问题六、委托、事件、装箱、拆箱七、算法总结 前言
本文旨在总结某一概念的性质并引出相关的技术要点。如果读者希望深入了解相关技术可以通过点击链接获取更多信息。友情提示建议将本文内容分成多个阶段学习一次性阅读可能会让新手感到困惑。初次接触某些概念时容易产生误解因此需要谨慎理解。 一、业务逻辑优化技巧
书中将业务逻辑优化放在最后而我这里放在开头但我选择将其置于开篇。这是因为很多技术栈和解决方案虽然备受推崇却往往只是形式上的有点像面试中滔滔不绝的八股文只有真正了解内涵的人才会明白。实际上很多优化和解决方案都是源于真实业务需求。只有在实践项目、需要时才需要去了解和研究。然而最重要的也是最容易被忽视的是日常业务逻辑编写的代码。一般人只关心如何实现功能就算万事大吉但优秀的程序员会更加关注如何以更恰当的方式实现功能既能提升性能又能兼顾效率。日积月累双方代码的质量就会千差万别。
二、Unity3d中C#的底层原理
在Unity中有两种运行机制Mono和IL2CPP。Mono是一个跨平台的开源项目Unity在开始时依靠Mono实现了跨平台的能力吸引了大量的软件开发人员。而IL2CPP则是后来者居上在性能、扩展等方面有着Mono无法比拟的优势。
详情查看Unity C#的底层原理概述。
三、List底层源码剖析
首先要提到的是 List 的使用。大多数人知其然而不知其所以然。当我们了解了 List 的源码之后就会明白其中的逻辑从而在项目中能够注意到许多常人容易忽略的细节和写法。比如在向 List 插入Insert元素时实际上是在 List 内部逐个遍历并赋值后续元素的过程。而在执行 Contains、Remove 等操作时List 则是通过从头到尾遍历的方式来完成相应的逻辑。在面对数据比较、剔除等复杂且数据量大的处理逻辑时经过深思熟虑后再采取行动解决问题而不是图省事随意地使用这些接口是至关重要的。然而大多数人并不了解这些操作背后的逻辑也因此容易忽视这些细节。
详情查看Unity List底层源码剖析。
四、Dictionary底层源码剖析
Dictionary是使用Hash冲突方案来解决关键字的字典组件。我们了解内部原理后在业务中创建时尽量使用自定义合理的预设值来管理她的大小。同时因为Dictionary是使用Object类的GetHashCode()方法来获取类实例的哈希值而该算法是将内存地址转换成哈希值的过程所以在调用时就会计算一次Hash所以频繁的使用则会带来大量的算力损耗。怎么优化呢尽量使用唯一标识的方式来代替GetHashCode()算法。
详情查看Unity Dictionary底层源码剖析。 说个题外话面试遇到面试官问Dictionary底层逻辑一般人应该说个哈希表和键值对说了一堆似懂非懂的业务什么行业算法一问算法是算法部门写的再问我们需要实现自己的数据结构吗又答到用自带的就行。净整些虚的如果大火遇到怎么怼就不用我多说了吧。 五、浮点数的精度问题
说到浮点数精度大家想到的就是double比float的精度高想要高精度就用double类型。两者最明显的区别就是所占位数的不同也就是字节不同float是32位占8字节double则是64位占8字节。因此运算效率也不同。 真正开发过程中会发现数值计算不确定、比较不相等以及其他问题当然解决方案也是有的可以用定点数、字符串等方式。
详情查看浮点数的精度问题
六、委托、事件、装箱、拆箱
详情查看委托、事件、装箱、拆箱
七、算法
详情查看目前无关注我持续更新。 总结
本文旨在总结业务逻辑优化技巧并引出相关的技术要点。在实际项目中业务逻辑编写的代码往往是最重要的而优秀的程序员会注重以恰当的方式实现功能提升性能和效率。 不必担心自己的代码不够好或者优化的方向不够准确。通过实践并不断修正错误我们才能不断成长。但同时也不要对自己或她人太过严格。比如如果你带领着一些新人她们只接触 Unity 一年就让她们直接使用泛型和遵守各种规范甚至使用一个自认为很厉害的框架可能会适得其反。更明智的做法是根据项目的整体条件和需求进行合理的安排和优化如果你是管理者需要让队员进行磨合。