Двоичный код будет намного быстрее в целом. Если вы используете числа с плавающей запятой, вы используете 4 байта на число вместо 1 байта на символ числа - поэтому число 5.34182 составляет 4 байта вместо 7 байтов плюс разделитель.
Пойдя дальше, вы, вероятно, можете сделать лучше. Ваш диск не читает данные побайтно, скорее он читает данные в блоках , и, как правило, вы хотите избежать чтения большего количества блоков, чем нужно. Реальная причина того, что двоичный формат быстрее, заключается не в том, что он занимает меньше байтов, а в том, что он занимает меньше блоков (продукт, состоящий из меньшего количества байтов). Это означает, что вы хотите минимизировать размер диска, поскольку чтение с диска на порядок медленнее, чем чтение из ОЗУ - доступ к диску измеряется в миллисекундах, а доступ к ОЗУ - в микросекундах.
Так что теперь вы можете сделать? Если ваша матрица разреженная , вы можете хранить только ненулевые элементы, что сэкономит вам много места. Поэтому вместо сохранения каждой точки сохраняйте пару (индекс, значение) для каждой записи. Это означает, что каждая запись теперь имеет 8 байтов вместо 4, но если больше половины матрицы равно нулю, вы экономите много места.
Наконец, сжатие может сильно помочь здесь. Конечно, большее сжатие означает больше процессорного времени для распаковки матрицы, но это также может означать более быстрое чтение с диска. Здесь вам действительно нужно экспериментировать - на простом конце спектра Run Length Encoding прост в реализации и часто работает на удивление хорошо. Это работает, потому что если вы храните для маленьких целых чисел и «простых» чисел с плавающей запятой, большинство байтов равны нулю. Это также хорошо работает, если одно и то же число повторяется несколько раз, что происходит в матрицах. Я также рекомендовал бы проверить более продвинутые схемы, такие как bzip2 , которые, хотя и более сложны в вычислительном отношении, могут значительно уменьшить размер диска. Увы, сжатие имеет тенденцию быть очень специфичным для домена, поэтому вы должны экспериментировать здесь. То, что работает в одном домене, не всегда работает в другом.