【发布时间】:2013-10-21 18:28:35
【问题描述】:
我有一个关于优化我的代码的问题(它有效但太慢了......)。我正在阅读表单中的输入
X1 Y1
X2 Y2
etc
其中 Xi, Yi 是整数。我使用bufferedReader 读取行,然后使用StringTokenizer 处理这些数字,如下所示:
StringTokenizer st = new StringTokenizer(line, " ");
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
问题在于,这种方法在处理大型数据集时似乎效率低下。您能否建议我进行一些简单的改进(我听说可以使用一些整数解析 int 或正则表达式)以提高性能?感谢您的任何提示
编辑:也许我误判了自己,必须在代码的其他地方进行一些改进......
【问题讨论】:
-
为什么感觉时间效率低?您是否分析过您的代码并发现这是瓶颈?您可以使用
Scanner.nextInt()节省一些代码行,但不会更快。 -
也许瓶颈不在这部分代码(这是我的猜测),但我也会尝试优化其他部分的代码
-
数据集有多大?
-
你绝对应该先用尽其他可以提高性能的地方。对于 I/O,您无能为力。您可以尝试以某种不同的序列化格式(如 json 或 avro)存储数据,但如果您只需要读取这种格式,则无能为力。另一种选择是尝试通过将其拆分为更多文件并让每个线程处理一个文件来并行化它。
-
瓶颈(和我的问题的核心)位于我在问题中显示的代码之外的其他地方 - 我错误地将我的问题归类...
标签: java stringtokenizer