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

免费cms网站管理系统学做各种糕点的网站

免费cms网站管理系统,学做各种糕点的网站,app开发人员网站,手动更新wordpress【导读】实际项目开发中、有部分童鞋可能无时无刻都在关注性能#xff0c;那么我们到底应该什么时候关注性能呢#xff1f;个人以为#xff0c;性能并非一次性就可完全成全#xff0c;需结合实际业务有一个大致评估或预期#xff0c;比如数据量大小#xff0c;若预期短暂… 【导读】实际项目开发中、有部分童鞋可能无时无刻都在关注性能那么我们到底应该什么时候关注性能呢个人以为性能并非一次性就可完全成全需结合实际业务有一个大致评估或预期比如数据量大小若预期短暂并不会达到性能瓶颈大可不必过度考虑又或者根据自我假想可能存在性能问题于是大张旗鼓陷入自我意识流最终可能结果吃亏反而不讨好项目性能考虑此前我个人写过一版Excel导入和导出并未使用对应开源组件因为导出和导入逻辑并不复杂不涉及单元格拆分、包含图片、下拉框等等但处理起来也并没有什么难度借助NPOI或EPPLUS工具皆可满足于是我尝试将此前封装Excel导入和导出做了进一步重构处理主要为解决此前遗留问题其一表头列和实体属性列顺序必须一一对应其二导出由于Excel单个Sheet行有限制超出一定行必须重建Sheet其三大量使用反射若存在多个Sheet且每个Sheet行数量稍微巨大则存在一定性能瓶颈如上两点可以简单解决这里我们忽略问题在于第三点因为使用泛型针对每一行读取都会反射对象同时也要获取其实例属性并赋值这里我们完全可以改善下性能接下来我们通过一个简单例子来演示如何改善反射性能当然也还有其他方案这里我只介绍我个人的方案反射性能改善如一部分开源组件一样我们通过特性标识属性属性名称和表头列匹配顺序无需一致同样属性可忽略赋值基于上述情况我们要获取对应实体所标识的属性特性这里为便于后续属性赋值我们缓存属性相关信息避免频繁通过反射获取属性信息接下来我们来到属性赋值和获取我们以设置值为例获取值同理同时以1万作为基数来验证然后以此基数递增如下测试实体public class Test {public int Id { get; set; }public string Name { get; set; } } 反射属性赋值示例如下static void ReflectionExample(int count) {var stopWatch  new Stopwatch();stopWatch.Start();var tests  Enumerable.Repeat(new Test(), count).ToList();var propertyIdInfo  typeof(Test).GetProperty(Id);var propertyNameInfo  typeof(Test).GetProperty(Name);foreach (var test in tests){propertyIdInfo.SetValue(test, 1);propertyNameInfo.SetValue(test, jeffcky);}Console.WriteLine($反射赋值耗时{stopWatch.ElapsedMilliseconds}ms); } 当然根据笔记本配置以及所使用耗时方案不标准结果会存在差异但基本可判断反射耗时会有20ms以上接下来我使用委托方式来直接调用属性Set方法看看性能是否会有改善static void DelegateExample(int count) {var stopWatch  new Stopwatch();stopWatch.Start();var tests  Enumerable.Repeat(new Test(), count).ToList();var setId  (ActionTest, int)Delegate.CreateDelegate(typeof(ActionTest, int), null, typeof(Test).GetProperty(Id).GetSetMethod());var setName  (ActionTest, string)Delegate.CreateDelegate(typeof(ActionTest, string), null,typeof(Test).GetProperty(Name).GetSetMethod());foreach (var test in tests){setId(test, 3);setName(test, jeffcky);}Console.WriteLine($委托赋值耗时{stopWatch.ElapsedMilliseconds}ms); } 接下来我们对比反射1万条数据属性赋值看看耗时情况怎样通过运行多次通过调用委托赋值其耗时基本可控制在5ms以内想想差距还是有点大接下来我们将数据量直接上升到100万看看其差距结果显而易见通过反射耗时将超过1s而委托赋值则控制在几十ms如果再加上属性的个数和获取属性值耗时时间势必将会再一次拉大为何很多人都说反射性能很差因为引入反射会通过如下几步对性能有巨大损耗其一检查所调用方法是否存在其二检查其安全性和访问可见性其三检查签名确保所提供的参数和类型的数量与方法定义签名一致其四解出参数此文意非强调不能用反射网上讨论也很多还是老话根据实际业务情况具体分析别整体就惦记和揪着性能不放比如针对快递行业导入和导出操作可谓再正常不过其导入数量也是庞大对于此种情况我们是否可考虑通过结构体存储数据呢一切皆通过实际场景出发。那么问题来了写本文的目的是什么呢???? 时常自我多学习多思考多尝试多积累是否存在更好解决方案我们都可明显觉察玩来玩去就那么点语法为什么别人就能玩出不一样的花样问题在哪里
http://wiki.neutronadmin.com/news/81565/

相关文章:

  • 如何学习做网站wordpress qq分享插件
  • 网站浏览速度做直播网站用什么系统
  • 豫建设标去哪个网站好发网站建设
  • 旅游最好的网站建设江门外贸网站建设
  • 做网站图片要求乐清做网站哪家好
  • 烟台制作网站有哪些公司专业做网站
  • 找产品代理去哪个网站购房网
  • 网站建设策划结束语电商网站简单html模板下载
  • 用网站免费模板做网站要会什么网站友链查询源码
  • 网站怎么做域名跳转王也王志飞
  • 性能网站建设网站建设设计策划
  • 湖南建设厅网站不良记录个人微信公众号收费吗
  • 网站移动端自适应腾讯公司做的购物网站
  • 顺德手机网站设计信息开发一个手游需要多少钱
  • 网站底部留言代码ftp上传文件到网站
  • 怎样建设学校网站山东建设厅网站 高英
  • 如何注册国外网站天津建设工程合同备案网站
  • 长沙做痔疮东大医院de网站手机网站知识
  • 重庆建设银行官方网站首页怎么在拼多多上开网店卖东西
  • 金溪网站建设推广网站建设与管理课程的目标
  • 外贸网站 海外推广网站网页怎么设计
  • 梅州正规的免费建站深圳网站搜索排名
  • 建设网站的调研报告东莞做网站网站
  • 免费自助站制作在线深圳最新消息
  • 网站设计公司佛山深圳app开发公司有哪些
  • 做网站 做应用海口网站公司
  • 空包网站做红章底单做网站一定要实名认证吗
  • 界面简洁的网站vr全景网站开发
  • 成都市建网站公司滁州新橙科技网站建设
  • 网站设计 色彩wordpress进入有点卡