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

电商网站建设实验心得北京网站搭建公司排行

电商网站建设实验心得,北京网站搭建公司排行,网页登录qq入口,wordpress内部优化C#作为一种强类型语言#xff0c;具有丰富的泛型支持#xff0c;允许开发者编写可以应对不同数据类型的通用代码。然而#xff0c;在泛型编译时#xff0c;针对结构和类作为泛型参数时#xff0c;会对性能产生不同的影响。 泛型编译行为 在C#中#xff0c;泛型编译行为取…C#作为一种强类型语言具有丰富的泛型支持允许开发者编写可以应对不同数据类型的通用代码。然而在泛型编译时针对结构和类作为泛型参数时会对性能产生不同的影响。 泛型编译行为 在C#中泛型编译行为取决于泛型参数的类型。具体而言当泛型参数是结构Struct时编译器会针对每个具体的结构类型生成特定的实现。而当泛型参数是类Class时编译器则可能生成更通用的实现。 结构 vs 类 结构Struct 结构是值类型它们存储在栈上具有较小的内存开销。当泛型参数是结构时编译器会针对每个具体的结构类型生成专门的实现这可能导致更高的性能。因为每个结构类型都有自己的实现避免了装箱和拆箱的开销同时优化了内存分配和访问。 类Class 类是引用类型存储在堆上需要通过引用进行访问。当泛型参数是类时编译器可能生成更通用的实现。这可能导致较低的性能因为通用实现需要进行动态调度和引用类型的操作增加了一些开销。 测试性能差异 针对不同的泛型参数进行性能测试是一种有效的方法以观察结构和类对泛型编译特性的影响。在测试中可能会发现对结构类型的泛型参数其性能可能更高而对类类型的泛型参数其性能可能略低。 using System.Diagnostics;namespace ConsoleApp1 {internal interface IValueGetter {int GetValue(int index);}internal class MyTestClassT where T : IValueGetter {private readonly T _valueGetter;public MyTestClass(T valueGetter) {_valueGetter valueGetter;}public void Run() {long r 0L;for (int i 0; i int.MaxValue; i) {r _valueGetter.GetValue(i);}}}internal struct StructValueGetter : IValueGetter {public readonly int GetValue(int index) {return index 3;}}internal struct StructValueGetter2(int someField) : IValueGetter {public readonly int GetValue(int index) {return index 5;}}internal class ClassValueGetter1 : IValueGetter {public int GetValue(int index) {return index 5;}}internal class ClassValueGetter2 : IValueGetter {public int GetValue(int index) {return index 7;}}internal static class Demo2 {public static void Run() {var t1 new MyTestClassStructValueGetter(new StructValueGetter());RunDemo(StructValueGetter , t1.Run);var t2 new MyTestClassClassValueGetter1(new ClassValueGetter1());RunDemo(ClassValueGetter1 , t2.Run);var t3 new MyTestClassClassValueGetter2(new ClassValueGetter2());RunDemo(ClassValueGetter2 , t3.Run);var t4 new MyTestClassIValueGetter(new ClassValueGetter1());RunDemo(IValueGetter-1 , t4.Run);var t5 new MyTestClassClassValueGetter1(new ClassValueGetter1());RunDemo(ClassValueGetter1 , t5.Run);var t6 new MyTestClassStructValueGetter2(new StructValueGetter2());RunDemo(StructValueGetter2, t6.Run);var t7 new MyTestClassIValueGetter(new ClassValueGetter2());RunDemo(IValueGetter-2 , t7.Run);var t8 new MyTestClassIValueGetter(new StructValueGetter());RunDemo(IValueGetter-3 , t8.Run);var t9 Activator.CreateInstance(typeof(MyTestClass).MakeGenericType(typeof(StructValueGetter)), new StructValueGetter());Action action9 (Action)Delegate.CreateDelegate(typeof(Action), t9, t9.GetType().GetMethod(Run));RunDemo(Dynamic-Struct , action9);}static void RunDemo(string caption, Action action) {var stopWatch Stopwatch.StartNew();action();stopWatch.Stop();Console.WriteLine(${caption} time {stopWatch.Elapsed});}} }Demo2.Run(); 在.net 8.0 Release 编译执行的参考结果如下 StructValueGetter time 00:00:00.6920186 ClassValueGetter1 time 00:00:01.1887137 ClassValueGetter2 time 00:00:05.2889692 IValueGetter-1 time 00:00:01.1652195 ClassValueGetter1 time 00:00:01.1625259 StructValueGetter2 time 00:00:00.6488674 IValueGetter-2 time 00:00:05.2114724 IValueGetter-3 time 00:00:07.1394676 Dynamic-Struct time 00:00:00.6491220 结论 泛型编译特性对性能有所影响我们发现 泛型参数是 Struct 比 class 的性能要好大约有两倍的差异 泛型参数如果存在多个 Struct 可能时性能没有影响但如果泛型参数存在多个 class 可能时性能急剧下降5倍之多 泛型参数如果是接口形式无论实际填充的结构还是类其最终的执行性能一定是很慢的 使用反射例如MakeGenericType构建出的泛型实例其实际运行性能并不受影响非常适合高度定制的运行时类型构建这一点非常重要例如你可以在运行时检测实际情况构建出不同的比较器对象虽然构建的工厂方法返回的是接口但你可以使用反射的方式动态传入字典的比较器参数实际上c#的 DictionaryTKey, TValue 这点设计是失败的他的comparer不是一个泛型参数而是接口 综上所述了解C#泛型编译特性对性能的影响是编写高性能代码的重要一部分合理使用对于关键性代码性能至关重要。 文章转载自编写人生 原文链接https://www.cnblogs.com/tansm/p/CSharp-Generic-Performance.html
http://www.zqtcl.cn/news/739501/

相关文章:

  • 商店网站制作做签名照的网站
  • 自己制作一个网站广州自助网站制作
  • 个人网站吗wordpress超精简主题
  • 手机版免费申请微网站wordpress 跳转链接
  • 网站建设与管理好吗广州白云最新消息
  • 织梦动漫网站模版wordpress 页面文章列表
  • 东莞做网站沃德长沙市网站开发
  • 哪些网站做的最好厦门网站建设网站
  • 网站安全事件应急处置机制建设类似百度的网站
  • 内蒙古知名网站建设网站测速工具
  • 怎样建立网站赚钱怎么登录住建局官网
  • 建站自学网页转向功能网站
  • 网站都有什么费用做酒店网站有哪些目录
  • 本地郑州网站建设东莞网站优化中易
  • 动态域名可以建网站德州公司做网站
  • 深圳建设银行官方网站wordpress 添加qq
  • 甘肃第九建设集团公司网站网站对企业的好处
  • 论坛网站建设规划书公司网站建设与设计制作
  • 做棋牌游戏网站犯法吗如何进行搜索引擎的优化
  • 常见的网站首页布局有哪几种陈光锋网站运营推广新动向
  • 手机网站活动策划方案开一个设计公司
  • 宝塔建设网站教程visual studio 2010 网站开发教程
  • 做网站购买服务器做谷歌网站使用什么统计代码吗
  • 网站系统与网站源码的关系emlog轻松转wordpress
  • 网站的简介怎么在后台炒做吉林省住房城乡建设厅网站首页
  • 泉州易尔通网站建设国际酒店网站建设不好
  • 网页下载网站福田企业网站推广公司
  • 北京网站建设开发公司哪家好网站添加在线留言
  • 新建的网站怎么做seo优化平面广告创意设计
  • yy陪玩网站怎么做软件项目管理计划