All streams
Search
Write a publication
Pull to refresh
112
0
Дмитрий Думанский @doom369

Гребец и на дуде игрец

Send message
Тоесть для этого примера я должен был бы создать шаблон «фабрика»?
Я знал, что обязательно кто-то это подметит. Шаблоны тем не менее не всегда уместны. На хабре была стаття по этому поводу.
Да, я и сам иногда грешу =), но только когда очень спешу и проще и быстрей написать так. Когда например делается выборка 2-х колонок из разных таблиц.
Очень познавательно, спасибо.
Если исходить из Ваших условий — приватный конструктор и статический метод в классе, который осуществит нужные проверки и вернет корректный обьект или ошибку.
>>Ну я бы поспорил
Я ведь написал — в некоторых ситуациях очень применимы.
Здесь предполагалось что часть модели Plan.status не может быть null. В виду constraint БД.
В принципе — да… Тем не менее 90% случаев сравнения строк — это
label.equals(str)

Этот случай больно уж редкий.
Интересный вариант, но стаття как раз про то как не нужно делать. Поэтому preconditions в конструкторе не очень хороший вариант =).
В случае если вы создаете обьект с пустым конструктором и инициализация полей Вам не нужна. А в пределах приложения это может быть существенно. В любом случае Вы правы, этот момент нужно подправить.
Сглупил, извиняюсь. Ваш код — как раз пример того как делать не надо. Увидел Runnable и подсознательно приписал new Thread®.start();
Ну вы даете, запустили 4 конкурентных потока и ожидаете получить правдивые результаты? Сделайте хотя бы так:
measure("valueOf", doValue);
Thread.yield();
measure("new", doNew);
Thread.yield();
measure("valueOf", doValue);
Thread.yield();
measure("new", doNew);


Вот результат:
valueOf elapsed 3006, rps 332667000
new elapsed 10259, rps 97475000
valueOf elapsed 2912, rps 343406000
new elapsed 10268, rps 97389000

Как раз почти 3.5 раза
Просмотрите пожалуйста еще раз топик. Так как раз указано, что:
Long l = 100L;//это тоже самое что Long.valueOf(100L);
Собственно вывод об этом и говрит. Извиняюсь, если сложилось впечетление из статьи, что эти шаги — оптимизация производительности
Вы сейчас очень не правы, хотя в контексте вашей JVM это может быть правдой. Но я бы не полагался на специфику реализации.
но к производительности это имхо не имеет практически никакого отношения.

Ну так и топик не называется «повышение проивзодительности java приложений».
Спасибо, действительно такое часто происходит. Добавил в топик
то это уже, очевидно, неправда

Зависит всетаки от значения IntegerCache.high, а не от кода
речь только о 7 версии

Это не так. Метод
getAndRemoveCacheProperties
Далеко не все java проекты проекты используют стэк из spring, hibernate и им подобных и далеко не все java проекты промышленные. Чаще всего это аутсорс и большие компании. А в маленьких игровых проектах и специализированных приложениях вполне обходятся без всего этого груза.
Да, оптимизация происходит, но не в случае что я описал. Компилятор оптимизирует код, но в своем понимании:
s = s + fileds[i]
транслируется в
s = new StringBuilder(s).append(fields[i]).toString();

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Registered
Activity