Hibernate Validation 6.0 ListValueExtractor.ExtractValues, похоже, имеет плохую производительность с большими спискамиJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Hibernate Validation 6.0 ListValueExtractor.ExtractValues, похоже, имеет плохую производительность с большими списками

Сообщение Anonymous »

Я использую проверку Hibernate 6.x. У меня есть поле в объекте, который я проверяю, в котором содержится список, список Doubles , например. Проблема, с которой я сталкиваюсь, заключается в том, что когда список очень большой, деградация производительности является существенной. Чтобы исследовать проблему, я реализовал проверку списков элементов в качестве пользовательского валидатора в списке, @ValidDoubles List
Пример объекта: < /p>

Код: Выделить всё

public class myDataObject {

private List doubles // List which can contain thousands of values

// Getters and Setters
}
Обновление
после дальнейшего профилирования и исследования я считаю, что проблема связана с отслеживанием сгибания, с которыми сталкиваются бобы, я уже проверяется при выполнении каскадного валидации, в частности,
. Интересно, что это второй дочерний объект, где время тратится, даже если они содержат относительно простые проверки. Интересно, настроил ли я неправильно валидатор или бобов, так как это кажется очень странным.

Код: Выделить всё







< /code>
validator vocation: < /p>
Set violations = validator.validate(input);
< /code>
Пример структуры объекта < /p>
public class InputObject {
@NotNull
String name;

@Valid
List firstChildren; // on average 10 objects but can be up to very large

// Getters and Setters
}

public class FirstChild {
@SomeCustomValidator // Not important
Integer someValue;

// 3 to 4 further fields with simple validators

@Valid
List secondChildren; // On average around 40 objects but can be very large

// Getters and Setters
}

public class SecondChild {
@NotBlank
String foo;

@NotBlank
String bar;

// Getters and Setters
}
< /code>
В заключение: < /p>

[*] Из профилировщика проблема заключается в каскадных подтверждениях, обнаруженных из аннотаций @valid < /code> в списках. валидация.
 Профилировщик показывает System.IdentityHashCode 
как метод, который принимает большую часть времени, затраченного на проверку.>

Подробнее здесь: https://stackoverflow.com/questions/661 ... e-poor-per
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»