Я бы сказал, нет значительная разница в производительности.Я провел несколько тестов, создавая 1000 объектов в каждую сторону, и каждый путь всегда занимал менее 50 мс, так что в этот момент вы, вероятно, раскалываете волосы.В обоих случаях сеттеры (если реализованы) вызываются, так что вы можете пойти по этому пути.
Я бы пошел с тем, что легче читать.Что касается последовательности, да, в целом, я думаю, что это важно, но я бы придерживался более удобного для чтения.Если вы строите объект с 20 свойствами, карта может быть не самой лучшей.Если вы создаете его с 4 свойствами, то, возможно, это имеет смысл.
Вот тесты, которые я провел:
@Test
public void performance1() {
def times = []
10.times {
1000.times {
def startTime = System.currentTimeMillis()
def user = new User()
user.firstName = "Steve"
user.lastName = "Jobs"
def endTime = System.currentTimeMillis()
times << endTime - startTime
}
}
println "Average: ${times.sum() / 10}"
}
@Test
public void performance2() {
def times = []
10.times {
1000.times {
def startTime = System.currentTimeMillis()
def user = new User(firstName: "Steve", lastName:"Jobs")
def endTime = System.currentTimeMillis()
times << endTime - startTime
}
}
println "Average: ${times.sum() / 10}"
}