我制作了一个Applet搜索实用程序,其中提供了一个字符串作为输入,并在指定的文件或文件夹中查找该字符串。
我已经完成了这个,但我不满意它的表现。
该过程花费太多时间来响应。
我决定做一下分析,看看发生了什么,我注意到了scanner.hasNextLine()方法大部分时间都在使用。
虽然这是我的计划很重要的方法,因为我要读所有的线路,找到该字符串,有没有通过,我可以提高其性能,并减少执行时间
提高Java程序的性能
这里任何其他方式的代码我正在使用这种方法....
fw = new FileWriter("filePath", true);
bw = new BufferedWriter(fw);
for (File file : filenames) {
if(file.isHidden())
continue;
if (!file.isDirectory()) {
Scanner scanner = new Scanner(file);
int cnt = 0;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if(!exactMatch)
{
if(!caseSensitive)
{
if (line.toLowerCase().contains(searchString.toLowerCase())) {
// System.out.println(line);
cnt += StringUtils.countMatches(line.toLowerCase(),
searchString.toLowerCase());
}
}
else
{
if (line.contains(searchString)) {
// System.out.println(line);
cnt += StringUtils.countMatches(line,
searchString);
}
}
}
是的,方法toLowerCase()也需要更多的时间,然后预期。
我已经改变了我的代码,现在我代替Scanner
使用BufferedReader
作为亚历克斯和NRJ建议,我发现我的应用程序的性能很好的改善。
现在正在处理其早期版本的三分之一时间。
感谢所有答复.....
究竟为什么你在网页中嵌入的文件搜索? – 2012-02-17 07:13:09
Andrew感谢您的评论,但该applet并未嵌入网页中,而是一个桌面应用程序。 – 2012-02-17 07:16:21
所以,'applet'是指a)'小应用',还是b)扩展'Applet'或'JApplet'的类? – 2012-02-17 07:20:18