锁定老帖子 主题:10万个字符串相加会发生什么??
精华帖 (0) :: 良好帖 (3) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-02-01
如果相加频率很频繁的话,挺可怕的,算一下,你这10万字符串占多少空间。
|
|
返回顶楼 | |
发表时间:2010-02-01
mazzystar 写道 蜗牛创业网 写道 append太多了会溢出。
我的意思是 buffer append太多,在很久以前这件事在我面前发生了 能说说最后怎么解决的吗? 应该是已经超出JVM的内存了吧~ |
|
返回顶楼 | |
发表时间:2010-02-01
楼主不错啊,能发现这问题,呵呵。
|
|
返回顶楼 | |
发表时间:2010-02-01
我觉得是设计思想的问题,不要说上传十万个字符串,就是上传一百万个字符串,就现在而言也不是没有,问题不是在于把String改成StringBuilder就OK了,问题在于怎么往上传,如果把这些字符串往数据库里这么一存,肯定不是一个好注意,无论是上传还是下载都会花费大量的时间,更别提对这些内容进行修改。所以我认为大于五千个字符串的不如保存成文件,在数据库里只要记一下这个文件的路径就可以了。
|
|
返回顶楼 | |
发表时间:2010-02-02
蜗牛创业网 写道 mazzystar 写道 蜗牛创业网 写道 append太多了会溢出。
我的意思是 buffer append太多,在很久以前这件事在我面前发生了 能说说最后怎么解决的吗? ByteArrayOutputStream 正道,以前处理一个10m的文件,string半个小时都处理不完,流瞬间就好了。 |
|
返回顶楼 | |
发表时间:2010-02-02
最后修改:2010-02-02
binlaniua 写道 其实
String a = "1" + ..... + ... 和 StringBuffer sbuff = new StringBuffer(); sbuff.append(..).append(..) 是一样的.. 和 String a = "1"; a += "b"; 就不一样了。。 Oh, my god...不知道你是在哪里看到的~ "1" + ..... + ...居然跟StringBuffer.append()是一样的? String.+ 与StringBuffer.append()相比,性能是很低效的。String.+每加一次就生成一个临时对象,StringBuffer.append()则是append过程中不断重新分配内存(次数要远远低于String.+)。 拼接大量字符串的时候,用StringBuffer.append()的性能远远高于String.+,只是相对耗费比较多的内存。 你可以测试一下,或者看一下String和StringBuffer的源代码。 |
|
返回顶楼 | |
发表时间:2010-02-02
Scenery 写道 我觉得是设计思想的问题,不要说上传十万个字符串,就是上传一百万个字符串,就现在而言也不是没有,问题不是在于把String改成StringBuilder就OK了,问题在于怎么往上传,如果把这些字符串往数据库里这么一存,肯定不是一个好注意,无论是上传还是下载都会花费大量的时间,更别提对这些内容进行修改。所以我认为大于五千个字符串的不如保存成文件,在数据库里只要记一下这个文件的路径就可以了。
感觉这蛮好的 |
|
返回顶楼 | |
发表时间:2010-02-02
kasirin 写道 Scenery 写道 我觉得是设计思想的问题,不要说上传十万个字符串,就是上传一百万个字符串,就现在而言也不是没有,问题不是在于把String改成StringBuilder就OK了,问题在于怎么往上传,如果把这些字符串往数据库里这么一存,肯定不是一个好注意,无论是上传还是下载都会花费大量的时间,更别提对这些内容进行修改。所以我认为大于五千个字符串的不如保存成文件,在数据库里只要记一下这个文件的路径就可以了。
感觉这蛮好的 这个显然自以为是了,从楼主透露出的一些信息能看出那个文件里保存的是电话号码,他需要把这些电话号码保存到数据库里才能进行查询、统计,或者避免重复等操作,如果四个人上传了十个这样的文件,文件里的电话号码可能重复,现在需要统计一下一共有多少电话号码,数据库里select count(*)...,文件里就麻烦了呀。如果他需要给这些号码发短信,并记录发送次数,这个发送次数难道也记录在文件里吗? |
|
返回顶楼 | |
发表时间:2010-02-02
ansjsun 写道 听哥一句用数组吧..先弄个足够大的数组...一行一行放.弄个数字记录.到了数组哪行了.如果不够数组扩容..至于那个需求..list和map都不行..容易内存溢出
你以为ArrayList会溢出的话,数组就不溢出了?? |
|
返回顶楼 | |
发表时间:2010-02-02
zhangdp_neu 写道 如果相加频率很频繁的话,挺可怕的,算一下,你这10万字符串占多少空间。
一个字符串20个字符,40个byte,10万也就4M而已 |
|
返回顶楼 | |