1 мегабайт не особо большой.
Двоичный формат будет более компактным и более быстрым, особенно если вы пишете свой собственный формат, а не используете поддержку сериализации .net, которая добавляет много данных к данным.
Если вы хотите придерживаться XML, обычно вы можете значительно улучшить производительность, используя краткий, компактный формат:
- использовать короткие имена для элементов и атрибутов: например, v, а не вертексентри.
- использовать самозакрывающиеся элементы с данными в атрибутах, а не cdata или дочерние элементы, содержащие отдельные значения. Обычно это получается более компактно.
- если у вас есть список простых значений, рассмотрите возможность использования единственного строкового значения, содержащего список через запятую, а не множества отдельных элементов / атрибутов. например используйте p = "12,22" вместо x = "12" y = "22". Это меньше данных для чтения, меньше элементов для анализа и вдвое меньше вызовов методов для чтения значений из элемента / считывателя xml.
- хранит только полезную точность. Двойник, преобразованный в строку, использует много цифр. Если вам нужно только 3 знака после запятой, сохраняйте только 3d.p.
Профилируйте и оптимизируйте код загрузки - вы можете найти узкие места, которые не имеют ничего общего с xml. Возможно, вам удастся отложить некоторую работу или выполнить некоторую обработку преобразования данных в другом потоке, но остерегайтесь введения большой сложности для небольших выгод.
Наконец, попробуйте другие подходы - XmlDocument, а не XmlReader, или другую библиотеку, или предварительную загрузку данных в MemoryStream. Там тоже можно найти улучшения.
Или просто скажите своему боссу, что это потому, что у вас нет восьмиядерного Xeon с терабайтом быстрой SSD ... :-)