当前位置: 首页 > news >正文

素材网站推广方案网站自然排名怎么优化

素材网站推广方案,网站自然排名怎么优化,高端网站有哪些优势,长春网站建设技术托管大家在写代码的时候#xff0c;相信有很多朋友对 struct 认知不是很足#xff0c;导致能用 class 的地方绝对不用struct#xff0c;但大家有没有发现#xff0c;最近的几个 C# 版本中#xff0c;底层框架中有很多 class 的替代品#xff0c;比如说#xff1a;Task 和 Va… 大家在写代码的时候相信有很多朋友对 struct 认知不是很足导致能用 class 的地方绝对不用struct但大家有没有发现最近的几个 C# 版本中底层框架中有很多 class 的替代品比如说Task 和 ValueTaskTuple 和 ValueTuple。本质上来说都是为了提少 GC 负担提高程序性能。今天就和大家简单聊下struct 和 class 到底在内存占用上有多大差距首先我们分别定义两个空类型然后分别灌入 500w 。class Program{static void Main(string[] args){var list  new ListTest(5000000);var valueList  new ListValueTest(5000000);for (int i  0; i  5000000; i){list.Add(new Test());valueList.Add(new ValueTest());}Console.WriteLine(结束);Console.ReadLine();}}class Test{}struct ValueTest{}接下来用 windbg 看一下差异。0:000 !clrstack -a OS Thread Id: 0x4040 (0)Child SP               IP Call Site 00000000001CE920 00007ffb8fb147bc System.Console.ReadLine() [/_/src/libraries/System.Console/src/System/Console.cs  629] 00000000001CE950 00007ffb2b4c621b ConsoleApp6.Program.Main(System.String[]) [D:\net5\ConsoleApp1\ConsoleApp6\Program.cs  24]PARAMETERS:args (0x00000000001CE9D0)  0x000000000281a650LOCALS:0x00000000001CE9B8  0x000000000281b6780x00000000001CE9B0  0x000000000281b6980x00000000001CE9AC  0x00000000004c4b400x00000000001CE9A0  0x00000000000000000x00000000001CE99C  0x00000000000000000:000 !DumpObj /d 000000000281b678 Name:        System.Collections.Generic.List1[[ConsoleApp6.Test, ConsoleApp6]] MethodTable: 00007ffb2b594240 EEClass:     00007ffb2b57f0b0 Size:        32(0x20) bytes File:        C:\Program Files\dotnet\shared\Microsoft.NETCore.App\5.0.13\System.Private.CoreLib.dll Fields:MT    Field   Offset                 Type VT     Attr            Value Name 00007ffb2b597638  4001d3c        8     System.__Canon[]  0 instance 0000000012811038 _items 00007ffb2b48b258  4001d3d       10         System.Int32  1 instance          5000000 _size 00007ffb2b48b258  4001d3e       14         System.Int32  1 instance          5000000 _version 00007ffb2b597638  4001d3f        8     System.__Canon[]  0   static dynamic statics NYI                 s_emptyArray 0:000 !DumpObj /d 000000000281b698 Name:        System.Collections.Generic.List1[[ConsoleApp6.ValueTest, ConsoleApp6]] MethodTable: 00007ffb2b594de8 EEClass:     00007ffb2b5a5ea0 Size:        32(0x20) bytes File:        C:\Program Files\dotnet\shared\Microsoft.NETCore.App\5.0.13\System.Private.CoreLib.dll Fields:MT    Field   Offset                 Type VT     Attr            Value Name 00007ffb2b596c60  4001d3c        8 ...eApp6.ValueTest[]  0 instance 0000000014e36a70 _items 00007ffb2b48b258  4001d3d       10         System.Int32  1 instance          5000000 _size 00007ffb2b48b258  4001d3e       14         System.Int32  1 instance          5000000 _version 00007ffb2b596c60  4001d3f        8 ...eApp6.ValueTest[]  0   static dynamic statics NYI                 s_emptyArray 0:000 !objsize 000000000281b678 sizeof(000000000281B678)  160000056 (0x9896838) bytes (System.Collections.Generic.List1[[ConsoleApp6.Test, ConsoleApp6]]) 0:000 !objsize 000000000281b698 sizeof(000000000281B698)  5000056 (0x4c4b78) bytes (System.Collections.Generic.List1[[ConsoleApp6.ValueTest, ConsoleApp6]])从输出中可以看到list160M而 valuelist5M 居然相差 32 倍 这种量级的差异在高性能的场景下足以让我们充分考量了对吧我相信有很多朋友应该能搞明白为什么会是 32 倍。真有不明白的同学我再来分析一波吧。先看struct用 dp 0000000014e36a70 看内存地址。0:000 !da 0000000014e36a70 Name:        ConsoleApp6.ValueTest[] MethodTable: 00007ffb2b596c60 EEClass:     00007ffb2b596be0 Size:        5000024(0x4c4b58) bytes Array:       Rank 1, Number of elements 5000000, Type VALUETYPE Element Methodtable: 00007ffb2b594760 [0] 0000000014e36a80 [1] 0000000014e36a81 [2] 0000000014e36a82 [3] 0000000014e36a83 [4] 0000000014e36a84 [5] 0000000014e36a85 [6] 0000000014e36a86 [7] 0000000014e36a87 [8] 0000000014e36a88 [9] 0000000014e36a89 [10] 0000000014e36a8a [11] 0000000014e36a8b [12] 0000000014e36a8c [13] 0000000014e36a8d [14] 0000000014e36a8e [15] 0000000014e36a8f [16] 0000000014e36a90 ...0:000 dp 0000000014e36a70 0000000014e36a70  00007ffb2b596c60 00000000004c4b40 0000000014e36a80  0000000000000000 0000000000000000 0000000014e36a90  0000000000000000 0000000000000000 0000000014e36aa0  0000000000000000 0000000000000000 0000000014e36ab0  0000000000000000 0000000000000000 0000000014e36ac0  0000000000000000 0000000000000000 0000000014e36ad0  0000000000000000 0000000000000000 0000000014e36ae0  0000000000000000 0000000000000000从输出看对于一个空 struct 而言在内存中只占用了 1byte。接下来看一下 引用类型用 dp 0000000012811038 即可。0:000 dp 0000000012811038 0000000012811038  00007ffb2b596a80 00000000004c4b40 0000000012811048  00000000028110e8 0000000002811100 0000000012811058  0000000002811118 0000000002811130 0000000012811068  0000000002811148 0000000002811160 0000000012811078  0000000002811178 0000000002812500 0000000012811088  00000000028128a8 00000000028128c0 0000000012811098  00000000028128d8 00000000028128f0 00000000128110a8  0000000002812908 00000000028129e8刚才也提到了两者相差32倍也就是一个引用类型应该要占用 32byte才对是吧那这个是怎么算的呢首先在 64bit 平台引用类型的最小size3*824byte 也即 **(对象头方法表指针空占位符)** 这个 size 在 coreclr 中也是有 const 声明的 剩下的 8byte 就是上面用 dp 命令看到的数组中的每一元素的 方法表指针 啦。至此大家都明白了吧。
http://www.sadfv.cn/news/162192/

相关文章:

  • 渗透网站后台数据截图完整网站开发需要多久
  • 网站开发技术三大件注销建设工程规划许可证在哪个网站
  • 丹徒网站建设包括哪些网站404页面怎么做
  • 慈溪网站建设公司浦东新区网站优化公司
  • app官方网站镇安县住房和城乡建设部网站
  • 网站建设进项填那个服务网站建设开发费会计分录
  • 端午节网站制作萧县哪有做网站的
  • 备案网站地址咸宁网站建设解决方案
  • 推广网站的方法有哪些北京免费网站建设
  • 集团网站建设哪家更好住房和城乡建设部网站现行规范
  • 有没有专门做化妆品小样的网站番禺核酸检测点免费
  • 合肥公司网站搭建服务商上海中学有哪些
  • 万网个人网站备案查询wordpress数据收集表单
  • 华为云网站定制优化外包顾问
  • 网站给假冒伪劣产品做推广长沙门户网站有哪些
  • 深圳网站建设多少钱济南网站开发薪酬
  • asp.net 创建网站网站开发与调试实验报告
  • 用html5做的简单的网站深圳建设集团怎么样
  • 哪些免费的网站可以做企业宣传不是用于制作网页的软件
  • 有哪些做软件的网站凡科做网站友情链接怎么做
  • 哪个是网站建设里面的服务器可以放几个网站
  • 网站建设攵金手指科杰壹陆怎么恢复网站数据库文件位置
  • 三桥做网站在中国做外国网站怎么收钱
  • 好的企业网站设计方案网站怎么做是满屏
  • 科技网站 石家庄基于android的app开发步骤
  • 新网站建设平台wordpress 文章 字体
  • 行业网站运营策划方案免费网站
  • 易语言做自动登陆网站教程推广优化网站排名
  • 网站建站工具j2ee 网站开发
  • 代做外国空间网站响应式网页设计最方便快速