Хорошо, я воспользовался советом из предыдущего поста, который я имел на форумах Unity, а также рассмотрел некоторые из пунктов, которые были здесь упомянуты, и создал несколько тестовых сценариев - вот мои выводы.
Прежде всего, исходя из того, что @Scott Hannen упомянул в комментарии (это также упоминалось в предыдущем посте на forum.Unity.com), я попытался создать собственный де-сериализатор, я удалил информацию, которую нужно поместить. в файл (и считывание обратно), и время сократилось до 0,13 секунды, чтобы получить достаточно информации для воссоздания местности для карты размером 1920 * 1080. Данные, с которыми я работал, были просто строкой, 2-мя целочисленными значениями и плоским массивом bools.
Итак, я вернулся, чтобы снова посмотреть на BinaryFormatter. Сразу же самым большим отличием, которое мне пришлось учесть, чтобы сопоставить сравнения друг с другом, было изменение списка пользовательского класса TestDataBaseEntry в массив bools (это то, что я использовал с бинарным писателем). Одно это уменьшило время чтения файла с 33,3 секунды для карты размером от 300 * 300 до 11,1 для карты размером 1920 * 1080 !!! Массовое улучшение - я предполагаю, что часть процесса BinaryFormatter - это много фоновых проверок и ошибок?
Так что это все еще не так быстро, как мой раздетый пользовательский сериализатор. Тем не менее, это еще не настоящее сравнение, поскольку я все еще де / сериализую реальный класс с BinaryFormatter, тогда как я де / сериализую только компоненты этого класса по отдельности, используя BinaryWriter / BinaryReader.
Так что у меня еще есть кое-какое тестирование, но для меня пока что решение состоит в том, чтобы не усложнять информацию, которую я пытаюсь записать в файл, и удалить как можно больше пользовательских типов (?). Вполне возможно, что я читаю неправильные ответы из этого ... но я взломаюсь и посмотрю, что я могу сделать.
Большое спасибо всем, кто ответил и предоставил мне другие возможности для изучения. Я все еще буду разбираться с ними дальше, чтобы расширить свои знания ... плюс один из них (например, protobuf-net) может быть лучшим решением для реализации;)
Еще раз спасибо. Laters.
ОБНОВЛЕНИЕ - На следующее утро ...
Итак, я запустил еще один тест, на этот раз полностью исключив пользовательский класс и просто сериализовав и десериализовав соответствующую часть прямо в файл и из файла. Теперь, когда BinaryFormatter не приходится иметь дело с ним в сериализуемом настраиваемом классе, я теперь получаю время чтения 0,15 секунды - то же самое, как если бы я использовал свой собственный настраиваемый сериализатор.
Итак, я узнал кое-что очень ценное со всей вашей помощью - сериализовать базовый тип, а не пользовательские классы!
Опять большое спасибо;)