Важнейшая часть здесь состоит в том, что вы объявили переменную как static
, потому что статические переменные shared среди всех экземпляров класса, что требует только столько места, сколько один экземпляр переменной. Объявление переменной final
делает ее неизменной вне ее объявления или конструктора.
Если чтение идет медленно, то чтение, запись в другой формат файла и затем чтение из этого файла будет еще медленнее. Вы просто добавляете больше действий к чему-то медленному ... Возможно, вам стоит посмотреть, как изменить способ чтения из текстового файла.
Если вы не знакомы с тем, как сериализация / десериализация выполняется в C #, используя встроенные библиотеки, вам следует начать с прочтения этого: https://docs.microsoft.com/en-us/dotnet/ csharp / Руководство по программированию / Концепции / Сериализация /
Вот ссылка, чтобы показать, как реализовать двоичную сериализацию: https://docs.microsoft.com/en-us/dotnet/ api / system.runtime.serialization.formatters.binary.binaryformatter? view = netframework-4.7.2
Однако, если вы не пишете исходный файл, вам просто нужно написать собственный десериализатор (который по сути то, что вы сделали - без реализации соответствующих шаблонов .NET). Может быть, попробуйте использовать BufferedStream
и посмотреть, поможет ли это, т.е.. :
using (FileStream fs = File.Open(fileName, ..... ))
using (BufferedStream bs = new BufferedStream(fs))
using (StreamReader sr = new StreamReader(bs))
{
string s;
while ((s = sr.ReadLine()) != null)
{
//your code
}
}
Также стоит взглянуть на эту библиотеку, которая может помочь вам с этой задачей: FileHelpers - Посмотрите на этот пример: https://www.filehelpers.net/example/QuickStart/ReadFileDelimited/
Это может быть глупый вопрос, но почему бы вам не отсканировать & amp; сохранить непосредственно в бинарный или .ply файл? Или даже сканирование & amp; сохранить в сетку или в какую-нибудь вокселизированную сетку
Вы также можете посмотреть подход, использованный в этом проекте, особенно PlyImporter.cs