我已经完成了Java作业。目标是使用Eclipse IDE将add.userAccount(String id, String name, String email)
插入文件来构建Java应用。
我对优化感到好奇。我将该代码放入循环(例如:
for(int times = 0, time < 10000; time++)
add.userAccount(String id, String name, String email);
)
,但需要很多时间(5分钟)。我使用FileInputStream和FileOutputStream。 (输入和输出)这里有人建议我优化此代码的方法吗? 这是我在Main测试中的代码,我用10000次创建了一个测试用例:
String path = "/home/thinhnv/user.txt";
Account account = new Account(path);
for (int i = 0; i < 10000; i++) {
Random rd = new Random();
int rd1 = rd.nextInt(10);
int rd2 = rd.nextInt(10);
int rd3 = rd.nextInt(10);
int rd4 = rd.nextInt(10);
String ten= "" + rd1 + rd2;
String maTK = "Thinh" + rd1 + rd2 + rd3 + rd4;
String sdt = "" + rd1 + rd2 + rd1 + rd2 + rd1 + rd2 + rd1 + rd2 + rd1 + rd2;
String pass = sdt;
User user = new User(maTK, pass, ten, sdt);
account.add(user);
}
这是我的代码,以获取更多详细信息:
public void add(User user) {// user i create in main
// TODO Auto-generated method stub
try {
getUsersInforFromFile();// this method i open a file, read
//data from this and take it in to List<User> users private property and// //end of this method i close input file
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println(" Error: getUsersInforFromFile: " + e.getMessage());
}
if (this.users.size() == 0) {
writeUserToFile(user);
System.out.println("signup successfully!");
return;
}
if (this.users.indexOf(user) == -1) {
writeUserToFile(user);// this method i open a file and write a data at append mode and then close this file
System.out.println("signup successfully!");
} else {
System.out.println("Account" + user.getMaTK() + " is already exist! Sign up failed");
}
}
最后,我仅使用方法:fineIn.read()和fileOut.write()逐字节。这会使我的程序运行更慢吗?
答案 0 :(得分:0)
您可以通过一起创建大块数据来减少写入操作的数量。打开和关闭文件流会花费一些时间,因此也请尝试减少它。