|
|
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
Добрый день в меня вопрос по MyBatis, Hibernate, EclipseLink Когда мы далем SELECT * FROM users, то нам возвращант List<Users> users. Вопрос такой: Делают указание выше ORM перед основным запросом COUNT(*) запрос, чтоб узнать размер будушего List? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 11:10 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
denis111111, если я правильно понял вопрос, то делают отдельным запросом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:05 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
xifr, Я когда создаю List<MyObject> l = new ArrayList<>(1234) Стараюсь всегда указывать размер списка чтоб не пересоздавать потом список Так же из запросами SELECT нужно зать размер списка на перед ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:29 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
можете просто users.size(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:31 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
denis111111Я когда создаю List<MyObject> l = new ArrayList<>(1234) Стараюсь всегда указывать размер списка чтоб не пересоздавать потом список Так же из запросами SELECT нужно зать размер списка на перед Я когда читаю такие комментарии, стараюсь не плакать. 1234 это не размер списка, а capacity, актуальный только для реализации в виде ArrayList Hibernate использует свои собственные коллекции, так как в них куча функциональности ещё навернуто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:32 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Ну вот, это я и хочу узнать Бо иногда я работаю из чистым JBDC И делаю примерно так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:39 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
Да уж... IMHO в большинстве СУБД count(*) будет выполняться значительно дольше, чем коллекция себя 100500 раз перересайзит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:43 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
denis111111Blazkowicz, Ну вот, это я и хочу узнать Бо иногда я работаю из чистым JBDC И делаю примерно так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. и это все для получения количество строк? а что мешает Вам использовать тот же size(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:48 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Понял что нужно пересмотреть Java Collection)) Ну пересоздавать много раз ArrayList мне определенно не нравиться все таки Может кто-то знает хорошый подход в заполнении коллекций когда делаем SELECT? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:52 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
denis111111Бо иногда я работаю из чистым JBDC И делаю примерно так: Денис, вы делаете мне больно. Что именно вы пытаетесь таким образом сэкономить? CPU? IO? Память? Нет ни одного параметра по которому бы SQL запрос выиграл бы у нескольких десятков копирований массива в памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:53 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
Музаффар, Стартовой размер ArrayList 10 Если виборка 234 рядка то масив в ArrayList много раз будет создаватся заново. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:55 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
denis111111Понял что нужно пересмотреть Java Collection)) И доклады Шипилёва и Куксенко. denis111111Ну пересоздавать много раз ArrayList мне определенно не нравиться все таки Ну, если мы в данном конкретном месте знаем примерный размер ожидаемых коллекций, то можно впендюрить некую средне минимальную capacity. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:57 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
denis111111Если виборка 234 рядка то масив в ArrayList много раз будет создаватся заново. Тебе домашнее задание - посчитать сколько именно раз это самое "много" и сколько миллисекунд оно занимает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 12:59 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
Blazkowiczdenis111111Бо иногда я работаю из чистым JBDC И делаю примерно так: Денис, вы делаете мне больно. Что именно вы пытаетесь таким образом сэкономить? CPU? IO? Память? Нет ни одного параметра по которому бы SQL запрос выиграл бы у нескольких десятков копирований массива в памяти. Насколько я понял, вы говорите что нет смысла делать дополнительной COUNT чтоб узнать размер ArrayList? Мой подход определенно не лучший (может нужно использывать другие реализации списка), но мне кажется нужно всегда задавать розмер ArrayList. Как делаете вы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 13:01 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
denis111111но мне кажется нужно всегда задавать розмер ArrayList. денис, ты не пьян случайно? что значит "тебе кажется"? массивы со списками не путаешь, нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 13:05 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
chpasha, Внутри ArrayList есть Object[] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 13:09 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
denis111111, а о каком количестве записей идёт речь? и каком размере данных в котором призводится подстчёт count? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 13:10 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
chpasha, спасибо, поржал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 13:11 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
Blazkowiczdenis111111Если виборка 234 рядка то масив в ArrayList много раз будет создаватся заново. Тебе домашнее задание - посчитать сколько именно раз это самое "много" и сколько миллисекунд оно занимает. ну если вести аналогию со сбором строки - то тормозить буде шикарно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 13:17 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
denis111111Насколько я понял, вы говорите что нет смысла делать дополнительной COUNT чтоб узнать размер ArrayList? Я говорю что SQL запрос это ну ооочень ресурсозатратно по сравнению с созданием десятка-другого копий массива. denis111111Мой подход определенно не лучший Скажем так, откровенно плохой. Ответь хотя бы на простой вопрос. Сколько времени у тебя занимает выполнение этого SQL запроса из Java. denis111111(может нужно использывать другие реализации списка) Не нужно. Операции с массивами реализованы на уровне CPU, поэтому ArrayList даёт фору всем остальным коллекциям. denis111111, но мне кажется нужно всегда задавать розмер ArrayList. Это не "розмер". Это "вместимость". denis111111Как делаете вы? Не занимаюсь превентивными оптимизациями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 13:17 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
вадяBlazkowiczпропущено... Тебе домашнее задание - посчитать сколько именно раз это самое "много" и сколько миллисекунд оно занимает. ну если вести аналогию со сбором строки - то тормозить буде шикарно. Ну, можно ещё аналогию с копированием файла на жестком диске провести. И массу других аналогий. Толку от них? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 13:18 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
denis111111Leonid Kudryavtsev, Понял что нужно пересмотреть Java Collection)) Ну пересоздавать много раз ArrayList мне определенно не нравиться все таки Может кто-то знает хорошый подход в заполнении коллекций когда делаем SELECT? 1) В общем случае, когда вы делаете select * в БД, то в момент его выполнения и даже в процессе выгрузки вам данных, БД может не знает конечный размер данных, его размер будет известен только после окончания выгрузке (это на стороне БД) И на клиенте, вы точно ни как это не сделаете (одним запросом) 2) Как я помню в JPA когда получаешь колекцию никакой ArrayList заранее инициализировать не надо, он возврощается по факту, и возвращается List (не факт что это будет ArrayList ) 3) Если вы делаете через jdbc, то на заморачиватся с размерами ArrayList самое бесполезное занятие. Как аргумент, можете посмотреть сорцы Hibernate, где вытаскиваются коллекции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 13:19 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
denis111111chpasha, Внутри ArrayList есть Object[] ладно. давай по-другому: в какой книжке или в каком месте ты прочитал, что в списках нужно всегда задавать размер явно? и еще: какая ошибка происходит, когда ты не задаешь размер? у тебя программа начинает тормозить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 13:20 |
|
||
|
Вопрос по ORM
|
|||
|---|---|---|---|
|
#18+
denis111111Внутри ArrayList есть Object[] И что? ))) BlazkowiczТебе домашнее задание - посчитать сколько именно раз это самое "много" и сколько миллисекунд оно занимает. + МассивоСписок, это почти как КотаПес ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 13:22 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39184575&tid=2124302]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
357ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 653ms |

| 0 / 0 |
