|
1 / 1 / 1
Регистрация: 04.11.2014
Сообщений: 7
|
|
Телефонный справочник или оптимизация скорости работы с данными04.11.2014, 05:31. Показов 1367. Ответов 11
Метки нет (Все метки)
Здравствуйте уважаемые форумчане. Столкнулся с задачей реализации телефонного справочника. Вроде бы все ничего, но по условиям задачи есть несколько ограничений: хранение базы в файле и минимизация времени обработки команд(Загрузка из файла, сохранение в файл, поиск, добавление/удаление/редактирование элемента).
То есть, судя по условиям задачи при запуске программы необходимо все данные подгружать в оперативную память. И тут возникает вопрос, в каком виде хранить данные внутри программы? При этом необходимо учитывать, что данные должны редактироваться, а значит нужен индекс, так как в заданной структуре отсутствуют уникальные поля. Для удовлетворительных результатов по скорости загрузки из файла и в файл я выбрал двоичную сериализацию (практическим путем выявил, что данный вид хранения является самым выгодным по скорости и размеру файла данных). Тестирую на 5000000 элементах в каждом из которых по 7 полей типа string. Пока ничего более дельного, кроме List<string[]>(либо object[]) в голову не пришло. Перепробовал множество способов но все либо очень долгое, либо требует очень много оперативной памяти. Хотелось бы узнать Ваше мнение по этому поводу. Заранее спасибо.
0
|
|
| 04.11.2014, 05:31 | |
|
Ответы с готовыми решениями:
11
Оптимизация или увеличение скорости работы программы Нужна программа на с или с++ Телефонный справочник
|
| 04.11.2014, 09:22 | |
|
Номер телефона, по определению, уникален. Если все записи фиксированного размера, то перезапись удаленных номеров элементарна. Идеальный вариант хранения в этом случае: .DBF с индексом или аналогичная структура. Если размер записей произволен: .DBF + Memo с индексом (или аналогичная структура).
Индекс - либо "key-value DB" (для "больших" данных), либо любой map (словарь) в памяти. Кликните здесь для просмотра всего текста
Для городского телефонного справочника в системе биллинга (100,000+ номеров: тлф, ФИО, адрес/организация) для индекса использовал B++Tree
1
|
|
|
Администратор
|
|
| 06.11.2014, 14:58 | |
|
Может, все-таки необязательно все данные сразу загружать в память?
Если объемы такие большие, по-моему проще будет взять БД (SQLite, например) и с ней работать. Нужны данные - отправили запрос, данные получили
1
|
|
|
1 / 1 / 1
Регистрация: 04.11.2014
Сообщений: 7
|
|
| 06.11.2014, 21:10 [ТС] | |
|
Да, Вы безусловно правы, самым разумным было бы использовать SQL, но к сожалению необходим именно файл( Причем надо сделать так, чтобы при загрузке/сохранении/обработке данных пользователь не умер от старости при теж же 5млн элементов)).
Удалось достичь результата: 5млн записей загрузка/сохранение занимает ~5сек. Манипулирование данными ~300млс. Я так полагаю, что данное время загрузки/сохранения обусловлено физическими характеристиками передачи данных HDD.
0
|
|
|
|
||
| 06.11.2014, 22:06 | ||
|
этим, это лучший вариант, ятд.
2
|
||
|
|
|
| 06.11.2014, 22:24 | |
|
1
|
|
|
1 / 1 / 1
Регистрация: 04.11.2014
Сообщений: 7
|
|
| 06.11.2014, 22:32 [ТС] | |
|
Это я все прекрасно понимаю, но был поставлен запрет на дополнительные компоненты, не входящие в поставку MS .NET Framework 3.5. Без данного ограничения у меня не было бы причины создавать эту тему, я бы сразу прикрутил SQLCe либо SQLite, но мои представления о развертывании локальной БД с помощью стандартных компонентов .NET Framework достаточно скудны. Если бы вы могли подсказать в какую сторону копать, я был бы очень благодарен))
0
|
|
|
|
||
| 06.11.2014, 22:34 | ||
|
1
|
||
|
1 / 1 / 1
Регистрация: 04.11.2014
Сообщений: 7
|
|||
| 06.11.2014, 22:41 [ТС] | |||
|
0
|
|||
|
|
||
| 06.11.2014, 22:48 | ||
).
1
|
||
|
1 / 1 / 1
Регистрация: 04.11.2014
Сообщений: 7
|
|
| 06.11.2014, 22:55 [ТС] | |
|
insite2012, это очень хорошо) Я более подробно изучу данную возможность. Спасибо за помощь)
0
|
|
| 06.11.2014, 22:55 | |
|
Помогаю со студенческими работами здесь
12
Телефонный справочник - в чём хранить записи? В БД или в файле? Оптимизация скорости работы с БД (ADO, DataEnvironment) Нужен совет: оптимизация кода, увеличение скорости работы скрипта
Оптимизация скорости работы жесткого диска. Не знаю ни чего по этой теме,нужно выступить с докладом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|