首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.util.Scanner有那么慢吗?

java.util.Scanner有那么慢吗?
EN

Stack Overflow用户
提问于 2010-03-15 19:47:38
回答 4查看 8.6K关注 0票数 17

在一个安卓应用程序中,我想使用Scanner类从一个文本文件(OpenGL的顶点坐标列表)中读取浮点数的列表。确切的代码是:

代码语言:javascript
运行
复制
Scanner in = new Scanner(new BufferedInputStream(getAssets().open("vertexes.off")));
final float[] vertexes = new float[nrVertexes];
for(int i=0;i<nrVertexFloats;i++){
    vertexes[i] = in.nextFloat();
}

然而,这似乎是令人难以置信的慢(它花了30分钟来读取10,000个浮点数!)-在2.1模拟器上进行了测试。到底怎么回事?当我在PC上使用Scanner时,我不记得它有那么慢(老实说,我以前从来没有读过超过100个值)。或者是其他东西,比如从资产输入流中读取?

谢谢你的帮助!

EN

回答 4

Stack Overflow用户

发布于 2011-10-16 06:42:16

对于Spotify挑战赛,他们写了一个小的Integer.parseInt/Double.parseDouble/Long.parseLong实用程序来更快地解析IO:http://spc10.contest.scrool.se/doc/javaio这个实用程序被称为Kattio.java,它使用BufferedReader,StringTokenizer和java来读取数字。

票数 2
EN

Stack Overflow用户

发布于 2010-03-15 20:59:32

是的,我没有看到这样的东西。我可以在桌面上以这种方式在4秒内读取大约10M个浮点数,但它不可能有太大的不同。

我正在尝试其他的解释--它是否阻塞了从getAssets()读取输入流?我可能会尝试完整地阅读该资源,对其进行计时,然后查看扫描所花费的额外时间。

票数 0
EN

Stack Overflow用户

发布于 2010-03-15 22:53:47

Scanner可能是问题的一部分,但您需要分析您的代码才能知道。替代方案可能会更快。下面是一个比较ScannerStreamTokenizer的简单benchmark

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2446805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档