我正在尝试一次处理一个通过网络存储的文件。由于没有缓冲,因此文件读取速度很快。我的问题是只列出文件夹中的目录。在许多文件夹中,每个文件夹至少有1万个文件。
由于File.list()返回一个数组而不是可迭代的数组,因此性能非常慢。Java退出并收集文件夹中的所有名称,然后将其打包到数组中,然后再返回。
有关此错误的条目是http://bugs.sun.com/view_bug.do;jsessionid=db7fcf25bcce13541c4289edeb4?bug_id=4285834,但没有解决方法。他们只是说JDK7已修复。
几个问题:
尽管不是很漂亮,但我还是通过在启动我的应用程序之前将dir / ls的输出传递到文件中并传入文件名来解决此类问题。
如果您需要在应用程序中执行此操作,则可以只使用system.exec(),但这会带来一些麻烦。
你问。第一种形式将非常快,第二种形式也将非常快。
确保对每行执行一项(裸露,无装饰,无图形),所选命令的完整路径和递归选项。
编辑:
仅仅30分钟就可以得到目录清单,哇。
令我惊讶的是,如果使用exec(),则可以将其标准输出重定向到管道中,而不是将其写入文件中。
如果这样做,则应立即开始获取文件,并能够在命令完成之前开始处理。
交互实际上可能会使事情变慢,但可能不会—您可以尝试一下。
哇,我只是为您找到.exec命令的语法,并偶然发现了它,可能正是您想要的(它使用exec和“
ls”列出了一个目录,并将结果通过管道传递到您的程序中进行处理):
好的链接在回溯中(Jörg在评论中提供了从Oracle打破的Sun
替代此)
无论如何,这个想法很简单,但是正确编写代码却很烦人。我会去窃取互联网上的一些代码,然后将它们破解-brb
/ **
*注意:仅将此作为最后的选择!它特定于Windows,甚至
*这不是一个好的解决方案,但是应该很快。
*
*要使用它,扩展FileProcessor并使用列表调用processFiles(“ ...”)
*选项,如果您希望它们像/ s ...我强烈建议/ b
*
*覆盖processFile,它将为输出的每一行调用一次。
* /
导入java.io. *;
公共抽象类FileProcessor
{
公共无效processFiles(String dirOptions)
{
处理theProcess = null;
BufferedReader inStream = null;
//调用Hello类
尝试
{
theProcess = Runtime.getRuntime()。exec(“ cmd / c dir” + dirOptions);
}
catch(IOException e)
{
System.err.println(“ exec()方法错误”);
e.printStackTrace();
}
//从被调用程序的标准输出流中读取
尝试
{
inStream = new BufferedReader(
新的InputStreamReader(theProcess.getInputStream()));
processFile(inStream.readLine());
}
catch(IOException e)
{
System.err.println(“ inStream.readLine()发生错误”);
e.printStackTrace();
}
} //结束方法
/ **覆盖此方法-每个文件将被调用一次* /
公共抽象无效processFile(String filename);
} //结束类
谢谢IBM的代码捐助者
当我在较大的数据集上运行代码时,我得到这个错误。 在1.4m问题数据集上运行代码。使用split函数会产生错误。 应用中的~\Documents\anaconda3\lib\site packages\pandas\core\series.py(self、func、convert\u dtype、args、**kwds)3589 else:3590 values=self.astype(objec
问题内容: 我知道nvarchar上的连接速度较慢,因为索引比nvarchar大,每个字符使用2个字节,而int始终为4个字节。联接性能差异是否显着?有什么强烈的理由要避免加入nvarchar?我找不到有关该主题的任何MSDN文章。 问题答案: 至少8x CPU。这是将nvarchar与varchar进行比较时可测量的增加:与纯正varchar相比,unicode排序和比较规则更加复杂。 因此,假
我正在尝试对由几个每日文件(每个15GB)组成的巨大数据集进行一些分析。为了更快,仅出于测试目的,我创建了一个非常小的数据集,其中包括所有相关场景。我必须分析每个用户的正确操作顺序(即类似于日志或审计)。 为了做到这一点,我定义了一个udf函数,然后应用了一个groupby。下面的代码重现了我的用例: 这给我带来了以下结果: 是不是太慢了? 我正在用一台现代笔记本电脑和康达。我使用conda na
本文向大家介绍针对jQuery性能的优化方法有哪些?相关面试题,主要包含被问及针对jQuery性能的优化方法有哪些?时的应答技巧和注意事项,需要的朋友参考一下 show slide animate 等频繁修改 dom 很耗性能,可采用 jquery.transit 插件等 使用单个 id 或 class 选择器当然也是优化点咯,元素选择器是真的会卡 每次调用 $() 其实都是生成一个超大的对象,还
这是应用程序。proiperties文件 spring.application.name配置服务器 server.port=8888 spring.cloud.config.server.git.uri=file:///c/用户/aadpatl/git-localconfig-repo 这是发生的异常 这是Spring boot应用程序 Pom.xml 请给我一个解决方案
我已经在SO上浏览了近10篇类似的帖子,但我仍然对我得到的结果感到困惑:在42K文档集合和19条记录集合之间的单个$查找聚合上,在外部字段上进行排序需要5秒。也就是798K的总向量积。 不幸的是,在这里,非规范化不是一个很好的选择,因为“to”集合中的文档被大量共享,并且在进行更改时需要在整个数据库中进行大量更新。 话虽如此,我似乎不明白为什么接下来要花这么长时间。我觉得我一定做错了什么。 上下文