坏的使用非常大的字符串? (JAVA)
发布时间:2020-09-01 08:57:18 所属栏目:Java 来源:互联网
导读:是否有任何负面的创造巨大的字符串?例如,如果我们从一个潜在的巨大的文本文件中读取文本: while (scanner.hasNext()) { someString += scanner.next();}// do something cool with someString 将逐行处理文件(一般)更好的解决方案,为什么? 谢谢 流媒体vs不
是否有任何负面的创造巨大的字符串?例如,如果我们从一个潜在的巨大的文本文件中读取文本: while (scanner.hasNext()) { someString += scanner.next(); } // do something cool with someString 将逐行处理文件(一般)更好的解决方案,为什么? 谢谢 解决方法流媒体vs不当您可以流式传输时,您可以处理任何大小的文件(假设您真的可以忘记所有已经看到的数据).你最终会有一个自然的O(n)复杂性,这是一件非常好的事情.你不会因为内存不足而中断. 流式可爱…但在每种情况下都不起作用. StringBuilder的 似乎对StringBuilder建议有一定的争议,这里是显示效果的基准.我不得不减小基准的大小,以便在合理的时间内慢速版本甚至完成. 结果先,然后代码.这是一个非常粗糙和准备的基准,但结果足够戏剧性,使得点… c:UsersJonTest>java Test slow Building a string of length 120000 without StringBuilder took 21763ms c:UsersJonTest>java Test fast Building a string of length 120000 with StringBuilder took 7ms 和代码… class FakeScanner { private int linesLeft; private final String line; public FakeScanner(String line,int count) { linesLeft = count; this.line = line; } public boolean hasNext() { return linesLeft > 0; } public String next() { linesLeft--; return line; } } public class Test { public static void main(String[] args) { FakeScanner scanner = new FakeScanner("test",30000); boolean useStringBuilder = "fast".equals(args[0]); // Accurate enough for this test long start = System.currentTimeMillis(); String someString; if (useStringBuilder) { StringBuilder builder = new StringBuilder(); while (scanner.hasNext()) { builder.append(scanner.next()); } someString = builder.toString(); } else { someString = ""; while (scanner.hasNext()) { someString += scanner.next(); } } long end = System.currentTimeMillis(); System.out.println("Building a string of length " + someString.length() + (useStringBuilder ? " with" : " without") + " StringBuilder took " + (end - start) + "ms"); } } (编辑:十堰站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 深入解析Java的Spring框架中的混合事务与bean的区分
- Java将对象保存到文件中/从文件中读取对象的方法
- java – JTable.clearSelection()vs Jtable.getSelectionMo
- java – 如何使用hibernate / jpa注释将一个类映射到不同的
- JSON 与对象、集合之间的转换的示例
- JAVA 字符串加密、密码加密实现方法
- 8个简单部分开启Java语言学习之路 附java学习书单
- java – 使用“元素已经使用”解析XML feed模块
- Java 和 JavaScript 真正通用的Base64编码详解
- java查找字符串中的包含子字符串的个数实现代码