C#问题,效率最大化,坐等大神来破。

问题描述

现有泛型List<string>lstXml=newList<string>,lstXml里有500万个值,其中有10个正确的xml格式,怎么[高效率]的找出/判断这10个xml的索引位置。抛异常的方式就不要说了,要高效率。这个算法该咋个写呀,大神来破。

解决方案

解决方案二:
话说,这个需求挺蛋疼,为什么把那么多乱七八糟的字符串都存到一个list里去如果你完全不知道其他字符串到底有可能是什么,不抛异常还能怎么办,自己正则判断吗,效率更低
解决方案三:
这个问题就好像在问:垃圾场里有500万个塑料袋,里面装的都不知道是什么垃圾,但是其中10个里面装的是鸡蛋,怎么样能够有效率的把它们找出来最好的办法就是一开始就不要把鸡蛋扔进垃圾场里去
解决方案四:
引用2楼Z65443344的回复:

这个问题就好像在问:垃圾场里有500万个塑料袋,里面装的都不知道是什么垃圾,但是其中10个里面装的是鸡蛋,怎么样能够有效率的把它们找出来最好的办法就是一开始就不要把鸡蛋扔进垃圾场里去

也就是这问题无解哦?xml是有规律的字符串,除了抛异常,必定还是有其他算法能快速找出来哦。
解决方案五:
首先怎么的判断是不是XML格式就是个问题
解决方案六:
引用4楼wangjun8868的回复:

首先怎么的判断是不是XML格式就是个问题

对呀,说个半天,就是这问题鄙人没有太好的解决方案,这不,来csdn求助各位经验丰富的大神呢。
解决方案七:
即使你有其他办法能够直接判断字符串是否合法(比如用正则自己去慢慢匹配),从500万乱七八糟的数据里遍历一遍就已经很没有效率了
解决方案八:
话说,你的list里的数据到底哪来的,不是你自己放进去的吗,放进去之前先判断一下,如果是xml,放到另一个list里,不好吗无脑add进去,过后又找,太没效率了
解决方案:
这个我觉的肯定不是这么弄的,你肯定要把合法的另外存,而过滤这个合法的XML的过程,注定高效不了。
解决方案:
如果List里的xml字符串错误原因一致的话倒是可以针对这个错误原因进行检查但是如果错误原因不确定或者错误种类比较多的话,LoadXML()然后捕获异常的方式反而效率会比较高而且检查效率也与XML字符串的长度有关
解决方案:
引用7楼Z65443344的回复:

话说,你的list里的数据到底哪来的,不是你自己放进去的吗,放进去之前先判断一下,如果是xml,放到另一个list里,不好吗无脑add进去,过后又找,太没效率了

list的数据是我添加进去的,放进去之前先判断一下,判断的时候不一样么?100万条数据不一样要判断100万次么,判断这100万次是在所难免的,现在就想找个高效的方法来判断。
解决方案:
自己先简单预查一下,例如检测开头和结尾是不是<>就可以过滤掉大部分
解决方案:
那要看“不正确的xml”都是怎么个不正确。
解决方案:
引用12楼caozhy的回复:

那要看“不正确的xml”都是怎么个不正确。

是的,这正是我反复强调的,不知道错误的字符串都有可能是什么,就无从判断引用10楼qy415421的回复:

list的数据是我添加进去的,放进去之前先判断一下,判断的时候不一样么?100万条数据不一样要判断100万次么,判断这100万次是在所难免的,现在就想找个高效的方法来判断。

是你加进去的没错,问题是数据源头肯定不是你代码写死的吧,数据到底是哪里来的?从数据库里读出来的?从网页上抓取的?
解决方案:
我们假设你的错误的xml中任何地方都可能有错,比如最后一个标记的>没有封闭,有一种不回溯检测xml是否正确的算法。那么显然对于list的每个成员,都必须完整读取一次才可以判断。
解决方案:
引用13楼Z65443344的回复:

Quote: 引用12楼caozhy的回复:
那要看“不正确的xml”都是怎么个不正确。

是的,这正是我反复强调的,不知道错误的字符串都有可能是什么,就无从判断引用10楼qy415421的回复:

list的数据是我添加进去的,放进去之前先判断一下,判断的时候不一样么?100万条数据不一样要判断100万次么,判断这100万次是在所难免的,现在就想找个高效的方法来判断。

是你加进去的没错,问题是数据源头肯定不是你代码写死的吧,数据到底是哪里来的?从数据库里读出来的?从网页上抓取的?

网页上,所有的http请求数据,来自于不同网站,网站随机的,所以说,数据来源我们不可控啊。目前找到一个老外用汇编写的xml解析程序,效率还蛮高的,我用c++写个接口,编译成dll,再用c#调用,正在测试效率。
解决方案:
引用14楼caozhy的回复:

我们假设你的错误的xml中任何地方都可能有错,比如最后一个标记的>没有封闭,有一种不回溯检测xml是否正确的算法。那么显然对于list的每个成员,都必须完整读取一次才可以判断。

对,非常对,但就差这么一个算法,算法的不同,效率也各有千秋。
解决方案:
除了多开几个线程,如何判断是否是xml还是用微软现成的通过字符串加载xml方法,通过trycatch来判断是否正确
解决方案:
这个就跟排序算法没有所谓最好最快一样,对于不同的数据,同样的算法效率也不见得一样比如如果错误数据是固定缺失了最后的>,其实字符串判断最后是不是>就行了,这样是最快的,但是对于其他类型的错误,这个算法就无能为力了而从头到尾检查每一项是否合法,必然是效率比较低的算法,但是也是适应性最强的算法
解决方案:
用try,catch捕获异常,虽然效率最低,但是除了能够验证结构是否缺失,还能验证每一项类型是否正确,就是是否能真正以xml的方式读取出来数据
解决方案:
我会告诉你我做过list里面有1000多万的数据的模糊搜索吗?最后哥写了一个多线程的分段搜索解决了。
解决方案:
只能先分批过滤,按照XML格式头比对
解决方案:
引用20楼luo18273197110的回复:

我会告诉你我做过list里面有1000多万的数据的模糊搜索吗?最后哥写了一个多线程的分段搜索解决了。

我觉得多线程分段这思路OK
解决方案:
如果数量级是500万,加try.catch肯定要蛋疼.这个数量级如果不用多线程谈效率也是扯淡.可不可以往索引表,Map等方向想.像跑解密一样.
解决方案:
顶一下顶一下顶一下顶一下
解决方案:
有你讨论的这5个钟头,估计100w的数据已经判断完了。
解决方案:
这种破问题也置顶,浪费时间。建议bz要严格把关。

时间: 2024-10-27 04:19:56

C#问题,效率最大化,坐等大神来破。的相关文章

地图-arcgis 渲染线不圆滑 坐等大神来指导!

问题描述 arcgis 渲染线不圆滑 坐等大神来指导! 我渲染了一个省的地图.根据每个县的数据点 来进行不同颜色的渲染.模型用的是IDW --转整型--栅格转面--裁剪(输入省要素)--最后输出要素面但是出来的渲染图层,各个颜色组成的线 不圆滑. SO我在模型里又加入了平滑线工具 . 出来的渲染圆滑是圆滑了 可是这个省地图的边界 也被圆滑了.与实际地图有偏差 . 这是不可以的. 我该在哪做操作来解决这个问题? 代码块? 模型块? 求大神 详细指导. QQ :496427196 在线急等. 解决方

大数据破危险品物流难题 危化品污染有望“圈治”

近年来,随着我国经济进入中高速增长,以及对高端化工产品的市场需求持续增长,危险品物流开始步入高速增长期.虽然,在这其中我国政府和相关管理部门已陆续建立了一系列规范危险品物流运作的法律.法规和标准,但是危险品物流任然存在严的问题. 大数据破危险品物流难题 危化品污染有望"圈治" 危险品在运输与仓储过程中,极易发生爆炸.泄漏和污染等事故.去年8月,天津港危险品爆炸事故带来血的教训,今年7月,全国海关就此进行了为期一个月的集中性警示教育.据不完全统计,仅去年一年就发生了近百起大大小小的危险品

硬件地址-哪位大神来教教我netstat -a的结果是什么意思

问题描述 哪位大神来教教我netstat -a的结果是什么意思 下面3张netstat -a的结果的图: 1.127.0.0.1:端口号,192.168.1.103:端口号,0.0.0.0:端口号,[::]:端口号,这些有什么不同?不是都是这台主机的端口吗? 2.外部地址是什么意思? 3.0.0.0.0:80和[::]:80这两个有什么不同?为什么要分开列出? 4.端口状态中established和listening有什么不同?closewait和sysn_send和fin_send是什么意思?

实现高效工作:IT人员迅速提升自我效率的十大方法

文章描述:IT人员迅速提升自我效率的十大方法. 所谓,时间就是金钱,效率也意味着时间.高效的工作方式可以为我们赢得更多成功的机遇.如何实现高效工作呢?Zielix创始人.Ingiter Frameworks的创建者Wayne Harrel发表了一篇博文<Top 10 ways to dramatically increase your personal productivity>,为我们介绍了迅速提升自我效率的十大方法.现CSDN对本文进行了编译,全文如下: 每个人都渴望成功,每个人都希望一个

mfc- MFC读取24位bmp图像出问题了,求大神来解决

问题描述 MFC读取24位bmp图像出问题了,求大神来解决 我要实现的是将24位bmp文件读入并在用户区显示,但是显示结果都不对的,谁能来帮忙看下? 注:因为对bmp文件还要做后续的处理(比如RGB转CMYK这样的),所以我现在写的代码只是一个测试是否正确读取bmp的程序.用其它控件去读取图片对我来说是毫无用处的. 这是我的代码: void CMy3View::OnLoad() { // TODO: 在此添加命令处理程序代码 CString strFilter,strFilename,info;

软件-急需解决,请求大神来帮助

问题描述 急需解决,请求大神来帮助 adt bundle和myeclipse的区别,自己它们日后做开发的局限性,还有就是bundle对开发的要求是什么 解决方案 adt中包含了eclipse及很多插件,让你直接就可以开发,后者要装android的包及插件,不过现在鼓励大家用android stduio

c++-关于算法的,很急,求大神来指点

问题描述 关于算法的,很急,求大神来指点 题目大概的意思就是一共有十个点包括a,b两点,每一个和另外九个点都是连通的,每条连线都有一个对应的权值,现在a要到b去,算法要实现的就是判断是a直接到b的权值最小还是要经过其中一个点,两个点或者更多的点这样的权值和才是最小的 解决方案 搜索TSP问题吧,网上有很多解

spring security启动异常,求大神来指点下

问题描述 SSH想加上spring security,搞了几天都没搞出来,哪位大神来指点下  WEB.XML配置 <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation<

junit-JUnit不知道怎么写,求大神来一篇,然后我仿照着做啊~~~跪谢

问题描述 JUnit不知道怎么写,求大神来一篇,然后我仿照着做啊---跪谢 @Controller@RequestMapping(""/feeBillClosedController"")public class FeeBillClosedController extends BaseController { /** * Logger for this class */ private static final Logger logger = Logger.getL