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

电脑可以做网站主机么wordpress 短网址插件

电脑可以做网站主机么,wordpress 短网址插件,公司装修深圳,石家庄哪里做微网站最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下:项目是.NET CORE,所以使用C#进行编写比较方法文件大小任意,所以不能将文件内容全部读入到内存中进行比较(更专业点说,需要使用非缓存的比较方式)不依赖第三方库越快越好为了选出最优的解决方案,我搭建了一个… 最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下:项目是.NET CORE,所以使用C#进行编写比较方法文件大小任意,所以不能将文件内容全部读入到内存中进行比较(更专业点说,需要使用非缓存的比较方式)不依赖第三方库越快越好为了选出最优的解决方案,我搭建了一个简单的命令行工程,准备了两个大小为912MB的文件,并且这两个文件内容完全相同.在本文的最后,你可以看到该工程的Main方法的代码.下面我们开始尝试各个比较方法,选出最优的解决方案:比较两个文件是否完全相同,首先想到的是用哈希算法(如MD5,SHA)算出两个文件的哈希值,然后进行比较.废话少说,撸起袖子写一个MD5比较方法:比较结果:耗时5.79秒,感觉还不错.然而,这是最佳的解决方案吗?其实我们仔细想一下,答案应该是否定的.因为任何哈希算法本质上都是对字节进行一定的计算,而计算过程是要消耗时间的.很多下载网站上提供了下载文件的哈希值,那是因为下载的源文件本身不会改变,只需要计算一次源文件的哈希值,提供给用户验证即可.而我们的需求中,两个文件都是不固定的,那么每次都要计算两个文件的哈希值,就不太合适了.所以,哈希比较这个方案被PASS.这种求算法最优解的问题,我以往的经验是: 去stackoverflow查找 :)经过我的艰苦努力,找到了一个非常切题的答案: How to compare 2 files fast using .NET?得赞最多一个答案,将代码改造了一下放入工程中:该方法基本的原理是循环读取两个文件,每次读取8个字节,转换为Int64,再进行数值比较.那么效率如何呢?Method: CompareByToInt64, Identical: True. Elapsed: 00:00:08.0918099什么?8秒!竟然比MD5还慢?这不是SO得赞最多的答案吗,怎么会这样?其实分析一下不难想到原因,因为每次只读取8个字节,程序频繁的进行IO操作,导致性能低下.看来SO上的答案也不能迷信啊!那么优化的方向就变为了如何减少IO操作带来的损耗.既然每次8个字节太少了,我们定义一个大一些的字节数组,比如1024个字节.每次读取1024个字节到数组中,然后进行字节数组的比较.但是这样又带来一个新问题,就是如何快速比较两个字节数组是否相同?我首先想到的是在MD5方法中用过的----将字节数组转换成字符串进行比较:结果:Method: CompareByString, Identical: True. Elapsed: 00:00:07.8088732耗时也接近8秒,比上一个方法强不了多少.分析一下原因,在每次循环中,字符串的转换是一个非常耗时的操作.那么有没有不进行类型转换的字节数组比较方法呢?我想到了LINQ中有一个比较序列的方法SequenceEqual,我们尝试使用该方法比较:结果:Method: CompareBySequenceEqual, Identical: True. Elapsed: 00:00:08.2174360竟然比前两个都要慢(实际这也是所有方案中最慢的一个),LINQ的SequenceEqual看来不是为了效率而生.那么我们不用那些花哨的功能,回归质朴,老实儿的使用while循环比较字节数组怎么样呢?结果是....Method: CompareByByteArry, Identical: True. Elapsed: 00:00:01.53568211.53秒!大突破!看来有时候看起来笨拙的方法反而效果更好!试验到此,比较两个900多MB的文件耗时1.5秒左右,读者对于该方法是否满意呢?No!我不满意!我相信通过努力,一定会找到更快的方法的!同样.NET CORE也在为了编写高性能代码而不断的优化中.那么,我们如何继续优化我们的代码呢?我突然想到在C# 7.2中加入的一个新的值类型: SpanT,它用来代表一段连续的内存区域,并提供一系列可操作该区域的方法.对于我们的需求,因为我们不会更改数组的值,所以可以使用另外一个只读的类型ReadOnlySpanT追求更高的效率.修改代码,使用ReadOnlySpanT:核心是用来比较的SequenceEqual方法,该方法是ReadOnlySpan的一个扩展方法,要注意它只是方法名与LINQ中一样,实现完全不同.那么该方法的表现如何呢?Method: CompareByReadOnlySpan, Identical: True. Elapsed: 00:00:00.9287703不 到 一 秒!相对上一个已经不错的结果,速度提高了差不多40%!对此结果,我个人觉得已经很满意了,如果各位有更快的方法,请不吝赐教,我非常欢迎!关于SpanT结构类型,各位读者如有兴趣,可浏览该文章,该文有非常详细的介绍.后记文中的代码只是出于实验性质,实际应用中仍可以继续细节上的优化, 如:如两个文件大小不同,直接返回false如果两个文件路径相同,直接返回true...试验工程的Main方法源码:原文地址https://www.cnblogs.com/waku/p/11069214.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://www.zqtcl.cn/news/849032/

相关文章:

  • 衡阳建设网站做网站和app多少费用
  • 怎么做付费网站蚌埠网站建设专业公司哪家好
  • 学网站建设需要多长时间成都网站建设定制开发服务
  • 建站宝盒后台深圳建网站公司怎么选择
  • 什么是大型门户网站网站建设的经验之谈
  • 网站建站网站设计网站制作书生
  • 租号网站是怎么做的wordpress 快讯功能
  • 口碑好的盐城网站建设wordpress课堂主题
  • 网站品牌打造wordpress插件有木马
  • 网站开发与软件研发有什么区别查网站域名备案查询系统
  • 硬盘做免费嗳暧视频网站黄冈免费网站推广平台汇总
  • node做网站怎么知道蜘蛛来过怎么学网站设计
  • 青海省建设厅网站公示公告简单建站
  • 手机网站用什么后台wordpress 百度蜘蛛
  • 网站文章伪原创怎么做手机网站 程序
  • 网站建设每月工作多少开发小程序的目的
  • 社区网站建设方案pptwordpress用户名在哪看
  • 浙江企业响应式网站建设公司简介如何写
  • 自己做静态网站的步骤店面设计在线
  • 活动汪活动策划网站wordpress 无法保存
  • 门户网站开发案例兰州需要做网站的公司有哪些
  • 东莞企业网站asp网站怎么安装
  • 个人做公司网站网站备案取消接入
  • 崇信网站建设it外包的收益主要有哪些
  • 安陆做网站多少钱免费网站定制
  • 快递网站模版长春好的做网站公司有哪些
  • 怎么利用公司网站开发客户网站建设重点步骤
  • 网站站内推广用个人电脑做网站的步骤
  • 网站设计主要包含3个方面陕西城乡住房建设部网站
  • 专门做汽车配件的网站东莞招聘网有哪些比较好