Intereting Posts
Использование дат в библиотеке Graphview Синхронизация контактов с моим собственным приложением, например skype или whatsapp Раскладка двух столбцов с первой колонкой wrap_content, вторая fill_parent Название элемента меню Android не отображается Android MVP с кинжалом 2 – Активность с несколькими фрагментами Захват кадры предварительного просмотра Camera2 возвращает пустой буфер Android Gradle plugin 0.7.0: «дубликаты файлов при упаковке APK» Анимация изменения списка просмотров Как google + достиг этого макета? Есть ли у RecyclerView какие-либо преимущества, кроме того, что заставить разработчиков использовать шаблон ViewHolder? Тост в андроиде Android – общие переходы элементов с завершением активности вызова () Тестирование биллинга в приложении с помощью тестовых учетных записей Каков предпочтительный способ сохранения / восстановления состояния экрана с помощью Flow + Mortar + Dagger2? KeyboardView не может быть создан

Быстрое открытие тысяч файлов в linux / c

Я делаю сканер SDCARD, который сканирует каждую папку и файл изображения.

Я использую C-код и используя opendir, readdir, fopen API для перечисления каталога и файла. У меня есть dirent, DIR переменные.

Проблема в fopen () занимает слишком много времени (300 секунд для 10000 файлов), в то время как движение режиссера занимает ~ 25 секунд.

Есть ли какой-либо API, который позволяет мне ускорить работу с открытым файлом, используя handle, dir_ino или подобное, чтобы я мог открыть файл с помощью дескриптора каталога или аналогичного.

До сих пор я смотрел n пытался использовать dirent-> dir_ino, DIR *, но не повезло.

Я стремлюсь к низкоуровневому api, который занимает меньше времени, чем fopen.

Редактирование будет fts и ftw apis полезным? Они, по-видимому, связаны только с каталогом перемещения … любым другим хаком или методом?

Открыта только функция «низкого уровня»

 int fd = open(dirent->d_name, O_RDONLY); 

Хотя, fopen не должно быть намного медленнее.