|
Zero-copy подход при копировании фотографий
|
|||
---|---|---|---|
#18+
В продолжение разработки утилит сортирующих фотки по дате создания снимка. Необходимо ускорить копирование. Можно делать не копирование а как-бы линкование файлов если файловая система поддерживает. Я подобный API использовал когда-то давно на С++ под NTFS но под Java - не делал. Вот фрагмент кода который в данный момент занят копированием. В настоящий момент копированием занята глупая и бестолковая однопоточная библиотека apache.commons.io. Первая цель (primary goal) - выкинуть ее и заменить на что-то более эффективное. И вторая цель (secondary goal) - исследовать возможности хард и сим-линков на NTFS/ext4 чтобы реализовать zero-copy. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 12:51 |
|
Zero-copy подход при копировании фотографий
|
|||
---|---|---|---|
#18+
Кажется все просто, Files.createLink() как раз и создает hard link. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 14:30 |
|
Zero-copy подход при копировании фотографий
|
|||
---|---|---|---|
#18+
Мда.. а ведь есть кейсы когда harkLink не создается. Разные разделы. Надо предусмотреть разные стратегии копирования. Пускай будет интерфейс. Код: java 1. 2. 3. 4. 5.
И в зависимости от того где лежит source и dest - надо автоматом выбирать наилучшую по времени стратегию. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 17:45 |
|
Zero-copy подход при копировании фотографий
|
|||
---|---|---|---|
#18+
Добавил 4 стратегии копирования. Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Ожидал что будет прирост в скорости копирования через FileChannel между двумя разными физическими дисками. Но пока незаметно. Последняя стратегия интересна тем что можно в листинге восстановить оригинальные имена. Код: java 1. 2. 3. 4. 5. 6. 7.
Под Windows симлинки скорее всего не работают. Я пока тестирую на Linux. Так что ребята-виндузятники где вы. Тестируйте что и как. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2021, 01:06 |
|
Zero-copy подход при копировании фотографий
|
|||
---|---|---|---|
#18+
Пофиксил важный баг. Раньше одинаковые HH-mm-ss в файле переписывали дважды одну и ту-же картинку если секунды фотосъемки совпадали. Сейчас этого не будет. К файлам будет добавляться уникальный счетчик типа целого числа в скобках: Код: java 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2021, 01:09 |
|
Zero-copy подход при копировании фотографий
|
|||
---|---|---|---|
#18+
Заложен первый кирпичик в поддержку COW для некоторых Linux платформ. Но это уже экзотика. Java напрямую не поддерживает такой API. Я буду думать как его вызвать косвенно. Кроме того этот метод поддерживают не все файловые системы. У меня на бэкапном диске стоит XFS и это дает возможность протестировать. Обычные (дефолтные) файловые системы (ext4) не поддерживают пока эту фичу. Обычным копированием толстых файлов (blue-ray фильмов) я субъективно замечаю что физического копирования действительно не просиходит Код: java 1.
работает мгновенно. Интерфейс я немножко расширил добавив специальные ограничители. Например класс ФС и ОС. Например софтлинки на файлы в NTFS не существовали (по крайней мере до Windows7) и поэтому нет смысла юзать неподходящие стратегии. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2021, 01:20 |
|
Zero-copy подход при копировании фотографий
|
|||
---|---|---|---|
#18+
mayton Ожидал что будет прирост в скорости копирования через FileChannel Будет некоторое уменьшение накладных расходов. На работу с буферами - в том числе. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2021, 06:46 |
|
Zero-copy подход при копировании фотографий
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 18:26 |
|
Zero-copy подход при копировании фотографий
|
|||
---|---|---|---|
#18+
Сделал экспорт метадаты в json для поисков и анализа. Может кто-то захочет поискать фотки определенного разрешения или снятых каким-то аппаратом. Есть также сведенья по GPS. Правда среди моих фоток это были редкие экземпляры. Возможно принесенные мной откуда-то извне. Код: javascript 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 20:48 |
|
Zero-copy подход при копировании фотографий
|
|||
---|---|---|---|
#18+
Формат "оригинальной" даты-времени, допустим, странный. Но почему он странный в других местах? Вместо "человеко-привычного" (ГГГГ-ММ-ДД чч:мм:сс) - одни сплошные двоеточия. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 05:27 |
|
Zero-copy подход при копировании фотографий
|
|||
---|---|---|---|
#18+
Вендор запихивает в таком виде. Там вобщем-то поле имеет тип ASCII. Поэтому так чудно и выглядит. Код: java 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 10:29 |
|
Zero-copy подход при копировании фотографий
|
|||
---|---|---|---|
#18+
Идея с Graal пока мне не нравится. Бинарник под linux получается размером 50 Мб. Многовато для утилиты. Хотя я могу его опубликовать. Под Windows я естественно его еще не собирал. Там может быть такая-же ситуация или еще хуже. Другая идея - перенести это в scala-native. Там будет другой бак-енд компиллятор. И может там он не будет тащить с собой весь rt. Правда мне придется сменить язык разработки. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2021, 11:09 |
|
|
start [/forum/topic.php?fid=59&gotonew=1&tid=2120358]: |
0ms |
get settings: |
26ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
14ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
284ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 406ms |
0 / 0 |