|
|
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
Может кто-нибудь подсказать библиотеки для БЫСТРОЙ работы с файлами (чтение-запись) в Java. Встроенные средства IO очень медленные и неудобные. Сравнивал скорость работы классов IO в Java и VB .Net. Конечным результатом должен быть массив или коллекция строк. Оказалось, что скорость работы кода получения строк в Java минимум в 2 раза медленнее. Такой результат давали все испробованные мной способы - метод readLine() в цикле, readAllLines(), преобразование в строку из байтового и символьного массивов и последующее разделение на строки. Что-то работало совсем медленно, что несколько быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 16:00 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
daged, java nio ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 16:30 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
Ее я тоже проверял. Например, метод readAllLines() из нее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 16:43 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
rema174daged, java nio nio не обязательно быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 16:44 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
dagedМожет кто-нибудь подсказать библиотеки для БЫСТРОЙ работы с файлами (чтение-запись) в Java. Встроенные средства IO очень медленные и неудобные. Сравнивал скорость работы классов IO в Java и VB .Net. Конечным результатом должен быть массив или коллекция строк. Оказалось, что скорость работы кода получения строк в Java минимум в 2 раза медленнее. Такой результат давали все испробованные мной способы - метод readLine() в цикле, readAllLines(), преобразование в строку из байтового и символьного массивов и последующее разделение на строки. Что-то работало совсем медленно, что несколько быстрее. Откуда уверенность что проблема именно в IO API, а не в том что в вашем тесте Java долго интерпретируется, или то что строки могут формироваться намного медленнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 16:45 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
помнится на javatalks кто-то поднимал такую же тему, наверное тс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 16:55 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
daged, А пробовали буфер при чтении увеличить? Иногда меняет производительность довольно существенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 16:58 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
>кто-то поднимал такую же тему Нет, я столкнулся с этой проблемой несколько дней назад ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 17:09 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
dagedОказалось, что скорость работы кода получения строк в Java минимум в 2 раза медленнееЕсли при вводе-выводе тормозит не ввод-вывод, то, скорее всего, вы что-то делаете неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 17:14 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
>то что строки могут формироваться намного медленнее? Как раз основная проблема, что строки формируются медленнее. Основное время при тесте когда сначала получается массив байт, а затем из него формируется строка, уходит на это. >А пробовали буфер при чтении увеличить? Не подскажете, как в NIO установить размер буфера для readAllLines()? А в классах IO скорость считывания достаточна, основной расход времени там идет на формирование строк из массива байт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 17:17 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
daged, ты не тем занимаешся. Во первых большая часть IO давно уже переписана с использованием NIO. Во вторых оптимизировать на системном уровне там особо нечего. Волшебной опции fast=true нету. Покажи лучше форуму свой код. Что за алгоритм. Что за задача. И тебе ткнут как ее оптимизировать или вообще сменить постановку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 17:22 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
авторОсновное время при тесте когда сначала получается массив байт, а затем из него формируется строка, уходит на это. дак это не относится к работе с файлами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 18:25 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
Если альтернативных библиотек не существует, просьба об этом тоже написать. >Волшебной опции fast=true нету Про коллекции в Java мне тоже говорили примерно тоже самое. В итоге нашел библиотеки коллекций, которые работают в большинстве случаев 5-10 и более раз быстрее, чем стандартные (в зависимости от задачи). Это если мне нужно работать с элементарными типами (всегда только это и нужно), а не оболочками над ними. Показывать особо нечего, это все стандартный кода. Я уже написал, что задача получать массив или коллекцию строк из файла. Каждый тест выполнялся по 100 раз на 1 мб файле, книге. 1 вариант (около 4.5 секунд): Код: java 1. 2. 2 вариант (около 4 секунд): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 3 вариант с получением байтов в буфер и затем преобразованием в строку + ее разделение на линии даже писать не буду, т.к. он выполнялся совсем уж долго. Для сравнения, код на VB .Net выполнялся примерно 1950 мс: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 18:31 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. Размер буфера по-умолчанию 8Кб, по-моему. Можешь попробовать 16 и 32. Он задаётся вторым параметром конструктора BufferedReader. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 18:39 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
>Можешь попробовать 16 и 32. Попробовал, результат отличается незначительно - на 100-200 мс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 18:48 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
дак какая из операций долгая - само чтение или заполнение строк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 18:59 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
>дак какая из операций долгая - само чтение или заполнение строк? Какая разница что выполняется дольше, если мне нужно получить определенный стандартный результат - строки из файла, а не просто чтобы головка для галочки прошлась по диску ЖД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 19:24 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
daged>дак какая из операций долгая - само чтение или заполнение строк? Какая разница что выполняется дольше, если мне нужно получить определенный стандартный результат - строки из файла, а не просто чтобы головка для галочки прошлась по диску ЖД. дак если чтение- оптимизировать чтние, а если преобразование строк - то причем здесь операции чтения? mayton Покажи лучше форуму свой код. Что за алгоритм. Что за задача. И тебе ткнут как ее оптимизировать или вообще сменить постановку. +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 19:28 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
>причем здесь операции чтения? При том, что по-хорошему и чтение, и создание строк должны были бы быть реализованы на низком уровне и их никак не надо было бы оптимизировать, да и не возможно бы это было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 19:40 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
daged, если я правильно понял то ты читаешь файл размером в 1Мb на масиив строк и это занимает не мене 4 сек что-то не то делаешь, что такие большие тайминги я как то на nio обрабатывал файл размером 100Мb и делил его на массив слов, который получался около 1.5 ляма эл-в и это занимало меньше секунды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 19:40 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
>большие тайминги Я написал, что тесты выполнялись по 100 раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 19:42 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
daged, я так понял, что один и тот же тест по 100 раз прогонялся для точности ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 19:52 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
Да, я неправильно выразился. Правильней было бы каждый тест состоял из 100 повторений указанного кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 19:56 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
daged, прикалываешся? у меня первый тест занимает менее пол секунды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 20:26 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38972132&tid=2125346]: |
0ms |
get settings: |
4ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
128ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 399ms |

| 0 / 0 |
