|
|
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
>прикалываешся Нет. У тебя же другой файл, там другое количество строк. В моем файле около 25000 строк. Сколько у тебя занимается второй тест? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 20:35 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
daged, ну, подгонять файл под такое кол-во строк не интересно, лучше выложи file ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 20:38 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
Не выложу. В том, что эта проблема из-за скорости Java я уверен, проверять не надо. Надо подсказать библиотеки, либо сказать об их отсутствии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 20:44 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
ну тогда успехов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 20:45 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
dagedНе выложу. В том, что эта проблема из-за скорости Java я уверен, проверять не надо. Надо подсказать библиотеки, либо сказать об их отсутствии. Насколько чисты были условия эксперимента? К примеру если ты на Windows-машине запускал тесты javа которые "прогревали" кеш файловой системы то последующий запуск vbs.net уже находился в заведомо других условиях и .net приложение использовало более быстрый IO. Условия компилляций. К примеру jvm бывает клиентская (hotspot) и серверная. И в варианте -client код может некоторое время работать в режиме интерпретатора байткода. Это может влиять на декодирование кодовой страницы. Вобщем тут надо курить опции -XX кажется. Особые условия .net кода. Используя возможности более тесной интеграции с ОС Windows какие-то части задачи (например та-же трансформация кодировок) могут быть расчитаны в контексте ОС-Windows и существенно выигрывать. Вобщем задача - эту надо решать комплексно а не в виде получения эррея строчек. Ведь этот эррей нужно и аллоцировать и удалять из памяти. И эти операции тоже имеют ненулевые накладные. Ну вобщем полна коробочка. И по чесноку ... надо еще прогнать этот-же тест на Linux-машине с .net-ом. Чтобы рассмотреть все кейсы тык-скыть а не только на винде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 21:00 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
mayton, может на пне третьем еще считает или дефрагментацию делал сто назад, а судя его код он не использует java 7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 21:21 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
>в заведомо других условиях Тесты запускались множество раз, в разном порядке за несколько дней - результат один. Попробую позапускать с разными опциями, если найду как их указывать в eclipse, но думаю результат не очень сильно изменится. >более тесной интеграции Что мешало сделать такую же тесную интеграцию разработчикам Java? На линуксе придется использовать Mono вместо .Net Framework. А платформа Mono на некоторых задачах очень сильно тормозила когда я ее тестировал. Это даже было одной из причин почему я перешел с VB .Net. Процессор мощный, тесты выполнял на Java 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 21:44 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
вот это мне делать нечего... первый тест с файлом 1024Кб (25 тыс строк) занимает от 1109 до 1125 мс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 21:50 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
>от 1109 до 1125 мс Уже ближе... Еще немного и будет как у меня :) Если конфигурация строку станет похожей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 22:01 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
врядли конфигурация строки может давать такую разницу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 22:05 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
Возможно. Может быть еще влияет количество ядер процессора, тип ЖД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 22:08 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
процессор у меня я бы не сказал, что мощный с мощный было бы быстрее... так что заблуждаешся ты в своих тестах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2015, 22:11 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
dagedВ том, что эта проблема из-за скорости Java я уверен, проверять не надо. Надо подсказать библиотеки, либо сказать об их отсутствии. Примерещилось. Возможная причина мерещения - кривые руки, написавшие быдлокод. С библиотеками порядок. Вопрос отвечен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2015, 10:48 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
2 ТС. Не помогут тебе библиотеки. Ты задачу свою изложи и почему тебя парит разница между 2 и 4 секундами. Навскидку, разница между джавой и VB в том, что джаве после старта надо "прогреться" - она компилирует свой байткод выборочно, т.е. не сразу и только тот, который активно используется. Так что правильный способ сделать замеры - прогнать твой тест 101 раз в одном запуске - 100 раз вхолостую, а 101й с замером. И так же для VB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2015, 11:25 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
>так что заблуждаешся ты в своих тестах Мне так не кажется. >процессор у меня я бы не сказал, что мощный У меня 2 ядра. >кривые руки, написавшие быдлокод Надеюсь, на этом форуме не приветствуется троллинг? Чел пустопорожне указывает на криворукость, вместо того, чтобы указать в чем именно заключалась криворукость или помалкивать. Надеюсь, модераторы обратят на это внимание. Видимо альтернативных библиотек нет, судя по тому, что о них никто даже не упоминает. Ну и ладно. Получилось наконец указать в Eclipse опцию -server и код действительно стал выполняться быстрее! Второй тест выполняется даже быстрее чем в VB .Net - около 1.7 секунд. Для этого указал в свойствах проекта JRE из JDK. А до этого среда ругалась на отсутствие папки server в JRE. Только теперь нужно будет использовать серверную JRE. Спасибо, mayton! Вопрос закрыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2015, 13:43 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
dagedПолучилось наконец указать в Eclipse опцию -server и код действительно стал выполняться быстрее! Собственно об интерпретации и был мой первый вопрос 17707652 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2015, 14:35 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
daged>так что заблуждаешся ты в своих тестах Мне так не кажется. цифры полученные мной должны же о чем-то говорить daged>процессор у меня я бы не сказал, что мощный У меня 2 ядра. у меня 3-х ядренный 3300Mhz ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2015, 16:25 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
>об интерпретации и был мой первый вопрос Надо было поподробнее объяснить что это означает, что нужно поменять. Мне те слова ни о чем не говорили. Я недавно начала изучать Java и не знаю всех тонкостей ее работы. >должны же о чем-то говорить Я уже пояснил о чем они говорят. Разница в файлах, количестве ядер, жд, может еще что-то. Там немного, тут чуть-чуть и в итоге набирается такая разница. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2015, 17:47 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
daged>об интерпретации и был мой первый вопрос Надо было поподробнее объяснить что это означает, что нужно поменять. Мне те слова ни о чем не говорили. Я недавно начала изучать Java и не знаю всех тонкостей ее работы. Google -> Java microbenchmarks ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2015, 19:13 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
Я что-то не пойму в чем прикол... Код: java 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. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. C:\soft\jdk1.8.0_40\bin\java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:59373,suspend=y,server=n -Dfile.encoding=windows-1251 ............ Connected to the target VM, address: '127.0.0.1:59373', transport: 'socket' Written 250000 line by 5208 ms Read 250000 line by 216 ms Read 250000 line by 178 ms Read 250000 line by 175 ms Read 250000 line by 175 ms Read 250000 line by 178 ms Read 250000 line by 172 ms Read 250000 line by 174 ms Read 250000 line by 175 ms Read 250000 line by 175 ms Read 250000 line by 174 ms Read 250000 line by 175 ms Read 250000 line by 174 ms Read 250000 line by 234 ms Read 250000 line by 174 ms Read 250000 line by 176 ms Read 250000 line by 174 ms Read 250000 line by 175 ms Read 250000 line by 174 ms Read 250000 line by 175 ms Read 250000 line by 175 ms Read 250000 line by 175 ms Read 250000 line by 175 ms Read 250000 line by 174 ms Read 250000 line by 174 ms Read 250000 line by 174 ms Reading using Java NIO Read 250000 line by 205 ms Read 250000 line by 169 ms Read 250000 line by 171 ms Read 250000 line by 167 ms Read 250000 line by 168 ms Read 250000 line by 168 ms Read 250000 line by 168 ms Read 250000 line by 166 ms Read 250000 line by 169 ms Read 250000 line by 165 ms Read 250000 line by 167 ms Read 250000 line by 167 ms Read 250000 line by 193 ms Read 250000 line by 167 ms Read 250000 line by 166 ms Read 250000 line by 165 ms Read 250000 line by 166 ms Read 250000 line by 167 ms Read 250000 line by 167 ms Read 250000 line by 166 ms Read 250000 line by 167 ms Read 250000 line by 166 ms Read 250000 line by 167 ms Read 250000 line by 168 ms Disconnected from the target VM, address: '127.0.0.1:59373', transport: 'socket' Read 250000 line by 179 ms Process finished with exit code 0 С NLINES = 2500000, файл 441 МБ: C:\soft\jdk1.8.0_40\bin\java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:60868,suspend=y,server=n -Xmx2048m -Dfile.encoding=windows-1251 ........ Connected to the target VM, address: '127.0.0.1:60868', transport: 'socket' Written 2500000 line by 45044 ms Read 2500000 line by 4075 ms Read 2500000 line by 2954 ms Read 2500000 line by 3745 ms Read 2500000 line by 3549 ms Read 2500000 line by 2689 ms Read 2500000 line by 3367 ms Read 2500000 line by 2818 ms Read 2500000 line by 2802 ms Read 2500000 line by 2358 ms Read 2500000 line by 2752 ms Read 2500000 line by 2700 ms Read 2500000 line by 2754 ms Read 2500000 line by 2598 ms Read 2500000 line by 2866 ms Read 2500000 line by 2626 ms Read 2500000 line by 2764 ms Read 2500000 line by 2672 ms Read 2500000 line by 2831 ms Read 2500000 line by 2623 ms Read 2500000 line by 2907 ms Read 2500000 line by 2638 ms Read 2500000 line by 2886 ms Read 2500000 line by 2700 ms Read 2500000 line by 2959 ms Read 2500000 line by 2677 ms Reading using Java NIO Read 2500000 line by 2755 ms Read 2500000 line by 2518 ms Read 2500000 line by 2936 ms Read 2500000 line by 2739 ms Read 2500000 line by 2676 ms Read 2500000 line by 3085 ms Read 2500000 line by 2743 ms Read 2500000 line by 3158 ms Read 2500000 line by 2764 ms Read 2500000 line by 3006 ms Read 2500000 line by 2778 ms Read 2500000 line by 2663 ms Read 2500000 line by 3081 ms Read 2500000 line by 2634 ms Read 2500000 line by 3001 ms Read 2500000 line by 2887 ms Read 2500000 line by 2994 ms Read 2500000 line by 2736 ms Read 2500000 line by 3057 ms Read 2500000 line by 2899 ms Read 2500000 line by 2650 ms Read 2500000 line by 3076 ms Read 2500000 line by 2626 ms Read 2500000 line by 2974 ms Disconnected from the target VM, address: '127.0.0.1:60868', transport: 'socket' Read 2500000 line by 2816 ms Process finished with exit code 0 ЗЫ. Астрологи провозгласили неделю бенчмарков... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2015, 23:36 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
Почему у меня получается 13 миллисекунд (? что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2015, 23:59 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
WGA. Несколько мыслей. Оба варианта неявно используют java.nio.charset.CharsetDecoder. Думаю что профилирование должно показать что декодирование блока байт в блок символом потребляет основное время CPU. Кстати я-бы предложил поработать с файл-исходником в формате UTF-16. Есть еще оригинальный вариант. Отказ от работы со строками и переход на работу с байтами (byte[]). Для win-1251 это почти полная аналогия. С++ часто пользуется аналогией byte==char и за счёт этого на микро-бенчарках почти всегда выигрывает. Платформеры в отличие от плюсов обязаны конвертить всё и вся в unicode для внутреннего представления и проигрывают на low-level задачах подобных этой. Работа с byte[] позволит уйти от кодировок и вопрос "хранения" строк трансформируется в вопрос "отображения". Тоесть мы переносим проблему декодирования "на потом". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2015, 00:30 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
mayton, Интуиция и опыт подсказывает, что все это несущественно. Ну не может быть так долго на таких копеечных размерах файлов. Помнится, когда лениво было разбираться со Stax, просто загонял в память XML-файлы в десятки мегабайт и выполнял XSLT-преобразование. Время выходило почти как описанные 4-5 сек. Новый вариант бенчмарка, делает переконвертацию файла из UTF-16 в UTF-8. Вполне себе реальная задачка. Код: java 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. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. Вот результаты: Read 50070 line by 81 ms Written 50070 line by 74 ms Read 50070 line by 65 ms Written 50070 line by 42 ms Read 50070 line by 40 ms Written 50070 line by 38 ms Read 50070 line by 39 ms Written 50070 line by 38 ms Read 50070 line by 44 ms Written 50070 line by 39 ms Read 50070 line by 41 ms Written 50070 line by 41 ms Read 50070 line by 54 ms Written 50070 line by 38 ms Read 50070 line by 39 ms Written 50070 line by 40 ms Read 50070 line by 38 ms Written 50070 line by 41 ms Read 50070 line by 42 ms Written 50070 line by 41 ms Process finished with exit code 0 dagedНе выложу. В том, что эта проблема из-за скорости Java я уверен, проверять не надо .Ну уж нет, мы проверим! Сдается мне, что хлопчик троллит.dagedНадо подсказать библиотеки, либо сказать об их отсутствии.Не, надо забанить школьника, чтобы не пистел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2015, 09:36 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
WGAСдается мне, что хлопчик троллит. А бы ли мальчик? dagedЯ недавно начала изучать Java и не знаю всех тонкостей ее работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2015, 09:47 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
видимо он делает много операций со строками, вот и получает тормоза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2015, 09:58 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
WGA, зачем выдумываешь свой тест? делай тогда уже как все, в цикле должно быть 100, а файл 25000 строк, 1Мб сделай хотя бы NIO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2015, 10:00 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
daged, Я не поленился, скачал книгу в txt, подогнал ее под 100000 строк. Размер файла получился 23mb и выполнил под java: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Результат от 60 до 120 msec Затем C#: Код: c# 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. Результат от 170 до 200 msec. Кстати, вы говорили о 100000 строк, а в вашем тексте 30000 строк для VB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2015, 11:48 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
rema174WGA, зачем выдумываешь свой тест? делай тогда уже как все, в цикле должно быть 100, а файл 25000 строк, 1Мб сделай хотя бы NIOБерешь, переделываешь, выставляешь здесь результаты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2015, 11:55 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
daged, Если вы использовали код, который показали выше, то ничего удивительно. В java вы читаете 100000 строк, а в VB 30000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2015, 11:56 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
Valery Shiskin, Добавлю, что в .net есть объект File, который действительно работает быстро. На c# это выглядит так: Код: c# 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2015, 12:16 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
mayton, А мне кажется, что ерунда все это. Взгляните на код VB выше, который привел daged. Для java он задал 10000 строк, а для VB 30000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2015, 12:24 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
WGArema174WGA, зачем выдумываешь свой тест? делай тогда уже как все, в цикле должно быть 100, а файл 25000 строк, 1Мб сделай хотя бы NIOБерешь, переделываешь, выставляешь здесь результаты... ты невнимательно читаешь, я уже выставлял тут свои результаты, причем так, как это делал тс на джаве ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2015, 12:58 |
|
||
|
Нужны библиотеки для быстрой работы с файлами
|
|||
|---|---|---|---|
|
#18+
rema174ты невнимательно читаешь, я уже выставлял тут свои результаты, причем так, как это делал тс на джавеТопик не представляет интереса, чтобы читать его внимательно. Я уже говорил о своем отношении к бесполезным синтетическим бенчмаркам. Баловство все это... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2015, 14:44 |
|
||
|
|

start [/forum/search_topic.php?author=AndrewKol&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
138ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
113ms |
get tp. blocked users: |
2ms |
| others: | 640ms |
| total: | 961ms |

| 0 / 0 |
