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

网站qq聊天代码建筑培训网能发焊工证吗

网站qq聊天代码,建筑培训网能发焊工证吗,app 推广,慢慢来建站公司概要 我们在开发过程中#xff0c;经常使用async的异步方法#xff0c;但是有些时候#xff0c;异步的方法中#xff0c;可能包含一些同步的处理。本文主要介绍通过ValueTask这个struct#xff0c;优化异步处理的方法性能。 代码及实现 有些时候我们会缓存一些数据在内…概要 我们在开发过程中经常使用async的异步方法但是有些时候异步的方法中可能包含一些同步的处理。本文主要介绍通过ValueTask这个struct优化异步处理的方法性能。 代码及实现 有些时候我们会缓存一些数据在内存中这些数据因为不经常改变所以并不需要每次都要从后台数据库中获取。 例如下面的代码 private static ListBranch _branches;public async TaskListBranch getBranches(){if (_branches is null){using (var context new BankContext()){_branches await context.Branches.ToListAsync();} }return _branches; }在一个银行App相关的系统中我们将分行的基本信息缓存在内存中方便其它方法调用。 上面的代码有一个问题无论我们的缓存是否命中都会以TaskList的形式返回。也就是说Runtime需要为返回Task相关的内容分配内存空间如果缓存命中意味着该方法仅仅是执行同步操作实际上只是一个同步操作。 如果以TaskList作为返回值对于同步操作而言完全是在浪费系统资源。Task是一个类这就意味着只要我们要使用该类就必须创建对象然后在通过GC收集。 对于一些高吞吐量高并发的站点如果可以对其进行适当优化可以节约大量资源。 ValueTask 解决方法 在.Net Core .2.0中引入一个结构体类型 ValueTask, 用于处理async方法中同步和异步返回并存的情况。 因为其只是一个结构体它并不需要像Task那样去创建对象再被GC收集。但是它却可以包裹TResult或Task作为async方法的返回值。 我们将上面的代码进行修改将Task替换成ValueTask即可 private static ListBranch _branches; public async ValueTaskListBranch getBranchesByTaskValue(){if (_branches is null){using (var context new BankContext()){_branches await context.Branches.ToListAsync();return _branches;} }return _branches; }我们用Benchmark测试上述两个方法的性能。 从测试结果上看ValueTask作为返回值消耗时间增加了约27%但是内存消耗几乎可以忽略不计。 全部代码请参考附录 附录 Programs.cs using System.Diagnostics; using System.Globalization; using System.Diagnostics.CodeAnalysis; using System.Reflection; using System.Runtime.CompilerServices; using System.Net.Mail; using System.ComponentModel.Design.Serialization; using System; using System.Threading; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using System.Linq; using System.Collections.Generic; using BenchmarkDotNet.Running; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Diagnosers; namespace IQueryableIEnumerable {[MemoryDiagnoser]public class Programs{[Benchmark]public async Task getBranches(){TaskValueTest task new TaskValueTest();for(var i0;i5;i){await task.getBranches();}}[Benchmark]public async Task getBranchesByValueTask(){TaskValueTest task new TaskValueTest();for(var i0;i5;i){await task.getBranchesByTaskValue();}}public static void Main(string[] args){var summary BenchmarkRunner.RunPrograms(); } } } TaskValueTest.cs namespace IQueryableIEnumerable {using System;using System.Threading;using System.Threading.Tasks;using Microsoft.EntityFrameworkCore;using System.Linq;using System.Collections.Generic;using BenchmarkDotNet.Running;using BenchmarkDotNet.Attributes;using BenchmarkDotNet.Diagnosers;public class TaskValueTest{private static ListBranch _branches;private static ListBranch _branches2;public async ValueTaskListBranch getBranchesByTaskValue(){if (_branches is null){using (var context new BankContext()){_branches await context.Branches.ToListAsync();} }return _branches;}public async TaskListBranch getBranches(){if (_branches2 is null){using (var context new BankContext()){_branches2 await context.Branches.ToListAsync();} }return _branches2;}} }
http://www.hkea.cn/news/14396494/

相关文章:

  • 建站有哪些需求小程序制作免费吗
  • 网站设计理念怎么写wordpress有游客注册帐号功能
  • 深圳网站建设主页网站域名空间代理
  • 装修网站平台排行榜珠海网站建设多少钱
  • 云南城市建设官方网站深圳建网站公司哪家好
  • 顺德建网站室内设计效果图说明
  • 分类信息有哪些网站金融理财管理网站源码 dedecms
  • 网站开发是干什么的道农网站建设
  • 长春网站优化常识中国建筑集团有限公司是央企吗
  • 网站开发要做什么江苏建设人才的网站
  • 邹城网站定制wordpress抓取新闻
  • 此网站域名即将过期高端的食品行业网站开发
  • 河南鑫安胜通建设有限公司网站推广普通话主题班会
  • 温州网站建设公司有哪些视频图站主题 wordpress
  • 嘉兴专业做网站青岛网站建设企业建站
  • 网站建设的500字小结seo站点是什么意思
  • 做网站制作一般多少钱门户网站维护怎么做
  • 电商开店流程及费用企业网站seo怎么做
  • 让你的静态网站 做后台网站开发是什么意思
  • 网站开发技术及软件介绍哈尔滨城市建设局网站
  • 建设网站资料在哪收集网站视频你懂我意思吧app
  • 成都网站制作scgckj网络商城网站建设
  • 如何做电视剧的短视频网站网站建设周期规划
  • 晨光科技 网站建设seo外链怎么发
  • PHP做的网站能容纳多少人帝国cms做微网站
  • 上海高端网站公司中国著名外贸公司有哪些
  • 沙坪坝网站建设公司选哪家好seo网站优化对象
  • 哪建网站好网站网站设计的公司
  • 微信怎么建小网站网站域名可以更改吗
  • 怎样制作微信网站链接饲料网站源码