|
|
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
test.java Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Создаём файл (contig -n zero 100000000) и проверяем ... "только чтение": Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. "чтение/запись": Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Нет смысла делать буфер более 128Кб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2014, 07:54 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Очень сомнительный тест. Вы что вообще в нем проверяете? Скорость записи в файл? А может быть скорость записи в std i/o? Или реализацию вывода в стандартные стримы в Hotspot? Или как в вашей операционке реализованы потоки консольного ввода/вывода? Надо смотреть с нормально созданным файлом через FileInput/OutputStream, что бы исключить все упомянутое выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2014, 09:50 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Да бога ради: файловый ввод-вывод Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Прикладной буфер всё равно уменьшает время копирования. Размер буфера всё равно нет смысла делать более 128 Кб. В сухом остатке: прежний вывод остаётся в силе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2014, 10:18 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovфайловый ввод-вывод /** * {@link java.io.BufferedInputStream#buf} * {@link java.io.BufferedOutputStream#buf} * ;) */ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2014, 11:21 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Я уже ёрничал насчёт общей эрудиции и банальной логики, но расшифрую: буферизированный поток ввода-вывода может быть и, весьма вероятно, будет хуже прикладного буфера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2014, 11:28 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Вариант, который в зависимости от параметров может использовать или стандартные описатели ввода-вывода или именованные файлы: test.java Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2014, 11:45 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Думаю что результат этого теста нужно записывать в многомерную матрицу. IO на файлах скорее всего платформозавизим. И я-бы добавил dimension по {Solaris, Windows, Linux, OS X}. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2014, 23:49 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Для счастливых обладателей JDK8/Java8 алмазным резцом выбито в граните магическое число восемь тыщ сто девяносто два. Files.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 00:13 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Счастливые обладатели Java8 могут проверить: действительно ли 8Кб - магическое число :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 01:58 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Интересно было бы ещё посмотреть FileChannel transfer в схожих условиях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 09:19 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Ломы. Тем более, что разница будет в пределах погрешности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 10:28 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovСчастливые обладатели Java8 могут проверить: действительно ли 8Кб - магическое число :)) Думаю что старый пьяница Гослинг знает ответ. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 11:40 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
maytonДумаю что старый пьяница Гослинг знает ответ. :) Дык это, вроде, распространенный размер, не только в Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 11:54 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Чтение блоками по 8 и 128 килобайт - одинаково в пределах погрешности: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. А вот на записи 128Кб вполне стабильно выигрывает: Код: plaintext 1. 2. 3. 4. Собственно, если бы с диска читались реальные данные - 128К выиграл бы ещё чуть-чуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 14:02 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, брадт. Это мистификасьон! Давай выведи в консоль следующие проперти: Код: java 1. 2. 3. 4. 5. 6. и попросим мемберов погонять бенчмарки на разных конфигурациях ОС+Filesystem. У меня к сожалению пока тоже винда. Но надеюсь кто-то одарит нас экзотикой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 16:05 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Вот чтение без разреженности (файл забит мусором из 128Кб буфера): Код: plaintext 1. 2. 3. 4. 5. Как я и обещал, 128Кб немного быстрее. Win7sp1, шесть гигабайт, два ядра, старенький SATA 120Гб. P.S. Насколько я понимаю, ввод-вывод сейчас сильно унифицирован, поэтому качественно результаты не будут зависеть от системы. Хотя могут зависеть от рантайма - как помнится, на JDK6 чтение разреженных файлов (без NIO) в скорости не прибавляло. Но это меня может глючить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 02:49 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovЯ уже ёрничал насчёт общей эрудиции и банальной логики, но расшифрую: буферизированный поток ввода-вывода может быть и, весьма вероятно, будет хуже прикладного буфера. Не верю ( C ) Там такой-же "прикладной буфер". Ничем не лучше и не хуже. Если декомпилировать, то код вполне вменяемый (сомневаюсь, что средний программист с форума напишет лучше, скорее хуже). Нормальный JIT компилятор, вызовы методов раскрывает (inline) в динамике. Т.ч. разница на какой глубине вложенности вызовов процедур создается буфер, тоже особой нет. IMHO & AFAIK Basil A. SidorovНет смысла делать буфер более 128Кб. Сомнительный вывод. 1. Сильно In-depend от ОС и железа. 2. Для высоконагруженных задач с большим объемом данных - IMHO чем больше, тем лучше. И всякие тесты по боку. Вроде, в Windows, _максимальный_ размер около 1 Mb (сейчас или было недавно). А вот выше этого размера может наоборот начать производительность падать (в ед. измерения "байты в секунду"). Note 1: лично я обычно ставлю размер буфера в районе 32 k. AFAIK от 16 до 64-128 разница не так уж и заметна. А по старой привычки пытаюсь в int (16 бит) поместиться ))) Note 2: например при прикладной задаче "копирование файла", важно не столько минимизация обращения к системе, сколько кол-во раз дерганей (перепозиционирования) головки на диске. Т.е. чем больше буфер, тем лучше. Тут уж можно и гигабайты захотеть ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2014, 17:36 |
|
||
|
Оптимальный размер буфера ввода вывода
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, еше и algorithm depends. Если мы работаем в B+Tree индеком на диске то оптимальная единица I/O это страница индекса (классика = 4..8 килобайт). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2014, 17:47 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38682941&tid=2126948]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
193ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 533ms |

| 0 / 0 |
