首页 新闻 搜索 专区 学院

string转int[]的性能问题

0
悬赏园豆:10 [待解决问题]

我现在的项目有一个场景,需要将string按,分隔,然后转换int[] ,简单的代码如下

string[] Ids = IndexText.Split(',');
int[] r = new int[Ids.Length];
for (var i = 0; i < Ids.Length; i++)
{
r[i] = Int32.Parse(Ids[i]);
}

这段代码在string特别长的时候,显示性能并不是特别好,请问有没有好一点算法来实现这个功能呢?

问题补充:

大概有100万的长度吧,所以肯定快不了,我能想到的优化,是把int[]数组存成Image类型到数据库,下次直接读成Int[]数组,不知道这样子操作能有多少的优化

 

我试了一下,现在的做法是把字段的内容换成Image类型存在数据库,读出来用BinaryFormatter转成Int[],效率就提高很多了

马陈灵的主页 马陈灵 | 初学一级 | 园豆:12
提问于:2013-04-28 15:16
< >
分享
所有回答(2)
0

我觉得这已经很快了。你的字符串里有多少个数字呀?这个场景用在什么地方?也许可以从其他方面考虑优化性能

会长 | 园豆:8070 (大侠五级) | 2013-04-28 16:38

大概有100万的长度吧,具体场景就比较难说,这个也是一个历史原因。

我能想到的优化,是把int[]数组存成Image类型到数据库,下次直接读成Int[]数组,省去Split和Pase的时间,不知道这样子操作能有多少的优化

支持(0) 反对(0) 马陈灵 | 园豆:12 (初学一级) | 2013-04-28 16:50
0

我觉得应该将这个string写入文件,然后读取流的时候判断读取到的byte是不是",",是的话将之前的转为数字存起来,不是的话继续读并将结果累加

飞来飞去 | 园豆:2057 (老鸟四级) | 2013-04-28 17:07

这样子的算法我估计提高应该不大,现在主要耗时间耗在split和parse这两个函数上面,差不多一半一半左右

支持(0) 反对(0) 马陈灵 | 园豆:12 (初学一级) | 2013-04-28 17:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册