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

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

I am using C code & using opendir, readdir, fopen APIs to enumerate directory and file open. i have dirent, DIR variables.

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

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

So far i have looked n tried to use dirent->dir_ino, DIR* but no luck.

Я ищу API низкого уровня, который занимает время, чем fopen.

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

5
nl ja de
Ограничения скорости don' t прибывают из API, но из самой SD-карты.
добавлено автор mouviciel, источник
Хорошо, я признаю, что был битом-wtf об этом вопросе, но чем больше я вижу комментарии и несколько предложений, тем больше I' m действительно заинтригованный. +1 к интересному предмету OP.
добавлено автор WhozCraig, источник
@Simon я предполагаю, потому что it' s на системе Android.
добавлено автор Olaf Dietsche, источник
@mouviciel: право, но fopen берет имя файла, что означает, что это пересмотрит справочник, перечисляющий, что программа просто заглядывала (потенциально несколько уровней глубоко, поэтому сканируя несколько справочников). Это может или может не стоить чего-то значительного, you' d вид надежды, что или файловая система или блочное устройство избегут ненужного диска (карта) деятельность, пряча списки справочников про запас. Если you' действительно удачное ре, Android обеспечивает некоторые гарантии, что это будет.
добавлено автор Steve Jessop, источник
Прежде чем я вырежу его, почему признак Android?
добавлено автор Simon, источник
@SteveJessop okey dokey, просто проверив.
добавлено автор Simon, источник
@SteveJessop, спасибо, да, я ищу решение в том направлении только..., как только я достиг к справочнику листа (где файл расположен), я могу открыться просто справочником использования имени файла или некоторой ручкой?
добавлено автор JRC, источник
I' ll, второй комментарий SD-карты mouviciel. Прежде чем быть слишком согнутым не в форме переписывания вашего кода определите эффективность его на реальном диске. SD-карты могут быть 50x медленнее, чем СЭТа-Драйв.
добавлено автор Peter Krnjevic, источник

1 ответы

Единственнаяфункция"низкогоуровня"open

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

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

1
добавлено
@JRC, Если вы хотите открыть файл, there' s никакой путь вокруг , открытого или fopen . Можно избежать chdir требование, конечно, если вы связываете полный путь ко множеству характера, используя strcpy и strcat .
добавлено автор Olaf Dietsche, источник
@JRC Вы can' t. у ДИРЕКТОРА есть значение для readdir только и ino, является структурой файловой системы низкого уровня, которая могла бы или не могла бы присутствовать. У фс DOS нет ino, например.
добавлено автор Olaf Dietsche, источник
@JRC я никогда не использовал их сам, но из страниц справочника fts , выглядит не отличающимся, чем readdir , и с ftw необходимо все еще обеспечить функцию, которая действительно открывает файл.
добавлено автор Olaf Dietsche, источник
@JRC нет, I' m жаль. Единственный путь состоит в том, чтобы проверить, если fts или ftw немного быстрее.
добавлено автор Olaf Dietsche, источник
Олаф спасибо, выше API возвратит действительный fd, только если d_name принадлежит текущему рабочему справочнику. Если я называю chdir() тогда, требуется почти то же самое время... так там способ избежать chdir() или называющий открытым на директивной ручке.
добавлено автор JRC, источник
как мы можем использовать ДИРЕКТОРА* и структура dirent.d_ino ценности?
добавлено автор JRC, источник
fts и ftw пчела будут полезны? они, кажется, связаны с пересекающим справочником только... какое-либо другое хакерское проникновение или метод?
добавлено автор JRC, источник
Хорошо. Какая-либо идея о файловом смещении или директивном погашении или даже быстром дескрипторе файла? Спасибо
добавлено автор JRC, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)