как бы написал парсер языка хронения данных (что-то типо json)
Только блоков там много можно создавать, типо:
Блок1 {
}
Блок2 {
}
Так вот в начале я разрабатывал просто 1 string всё это держит в памяти. Здесь же неудобство если (например у нас 5 блоков) пятый меняется (записывается или удаляется ключ) то переписывается все блоки (от нуля до всю строку конкенстация)
И оно отлично справляется.
По логике я решил оптимизировать, то есть каждый блок сохранил в List<String> то есть будет изменяться только один блок когда как других это не тронет, затем я изменил на StringBuilder
Работает но только если не слишком много строк ~ 2т символов.
А затем она просто зависает. Исключений нет. Ошибки не вылазят.
Если до 2т символов то ускорение работы видно.
Когда как 1 переменная спокойно работает. И до 900 мб информации тянет (конечно за время)
И я сейчас заметил один прикольный момент function readFile(fileName) { setBase(readFromFile(fileName); // устанавливает в базу содержимого текста Console.Write("end read file"); } function setBase(String base) { // тут идет алгоритм заполнения базы Console.Write("end set base"); return; } При запуске выходит "end set base", а какого то фига end read file не выходит, хотя оно должно же, так как setBase() функция завершает работу, оповещает и вы ходит, следом стоит вывод end read file
Обсуждают сегодня