扫描仪优化

时间:2019-03-01 04:00:41

标签: java

我已经完成了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()逐字节。这会使我的程序运行更慢吗?

1 个答案:

答案 0 :(得分:0)

您可以通过一起创建大块数据来减少写入操作的数量。打开和关闭文件流会花费一些时间,因此也请尝试减少它。