开始时,循环进行得非常快,几小时后变慢,单个增量平均需要10秒。 我创建了一个ArrayList,以便在处理完数据后保存所有内容。 还尝试了batch_size但没有显着的改进。 我使用的是mysql5.7,innodb,utf8mb4,我在db中直接插入要快得多。
Controller.java
// call 4000 times
Observable.fromArray(postTodayHolding).subscribe(System.out::println);
dmkm
public @ResponseBody String postTodayHolding() throws IOException, ParseException {
List<AccountHolding> cshdlist = new ArrayList<AccountHolding>();
// pnlResultNormal size about 400
for (Integer q = 0; q < pnlResultNormal.size(); q += 2) {
AccountHolding cshd = new AccountHolding();
cshd.setIdDri(fk);
String partID = pnlResultNormal.get(q).text().replace("\u00a0", "");
String holding = pnlResultNormal.get(q+1).text().replace("\u00a0", "");
CcassParticipants results = pplist.stream().filter(itm -> partID.equals(itm.getPartId())).findAny().orElse(null);
cshd.setPartId(results.getId());
cshd.setHolding(getBDformatValue(holding));
cshdlist.add(cshd);
}
AccountHoldingRepository.save(cshdlist);
... another code
我想我发现了这个问题,当我在顶部&#39;在终端中,它一直显示大约100%的cpu,并且在完成cron工作几个小时后几乎吃掉了我的所有内存。
java 99.6 01:51:12 42/1 1 122 3627M 0B 219M 93688 72225 running *0[1] 0.00000 0.00000 501 1926111 467