У меня есть около 5000 записей для обновления. Я пытаюсь измерить эффективность операции. Он начинается примерно с 100 мс, но после каждых тысяч обновлений время работы увеличивается примерно на 80 мс. Почему он замедляется? JVM?Hibernate Batch Operation performance
StatelessSession session = dao.getStatelessSession();
Transaction transaction = session.beginTransaction();
try {
List<Entity> list = dao.findAll();
int counter = 0;
for (Entity each : list) {
final Date startTime = Clock.getTime();
webService.execute(each);
session.update(each);
counter += 1;
final Date endTime = Clock.getTime();
LOGGER.info("***** " + getMilliSecondsDifference(startTime, endTime) + " for count: " + counter + "*****");
}
} catch (Exception e) {
LOGGER.info("***** Exception occured : ", e);
} finally {
transaction.commit();
session.close();
}
Был бы также вызов webService. Что заставляет вас думать, что спящий режим становится медленнее? Я предлагаю вам закрыть часть выполнения werbservice и снова измерить ее. –
После закрытия вызова webservice я попробовал с 15000 объектами, и все они составляют около 4 мс. Это похоже на ответ, но я не могу принять комментарий в качестве ответа. Можете ли вы опубликовать это как ответ? –