Muszę napisać dane z obliczeń, które zostaną później odczytane przez Paraview (plik .vtu lub vtk).
Jeśli chodzi o rozmiar pliku, czy powinienem wybrać format ASCII czy format binarny?
źródło
Muszę napisać dane z obliczeń, które zostaną później odczytane przez Paraview (plik .vtu lub vtk).
Jeśli chodzi o rozmiar pliku, czy powinienem wybrać format ASCII czy format binarny?
Jeśli twoim jedynym zmartwieniem jest rozmiar pliku, to chcesz pliki binarne. W przykładowym przykładzie załóżmy, że piszesz 1 plik zmiennoprzecinkowy podwójnej precyzji do pliku. Załóżmy, że system plików doskonale sobie z tym poradzi, a plik, nagłówki i wypełnienie mają wartość 0.
W przypadku pliku binarnego liczba ta zajmowałaby dokładny rozmiar liczby w pamięci RAM lub 8 bajtów.
W formacie ASCII miałby:
Zakładając, że używa on tylko 1 bajtu na znak, czyli 22 bajty na tę samą liczbę. Nie uwzględnia to znaków wymaganych do rozróżnienia między liczbami (zwykle co najmniej 1). Dlatego rozmiar pliku w formacie ASCII będzie około 3 razy większy.
Możesz wymienić rozmiar pliku na dokładność w przechowywanych plikach (zachowaj tylko 5-6 cyfr w bazie), ale to zależy od tego, do czego ich używasz. Główną zaletą ASCII jest debugowanie lub tworzenie danych czytelnych dla ludzi.
W praktyce rzadko potrzebujesz danych w plikach wizualizacji, które są dokładniejsze niż, powiedzmy, 3 prawidłowe cyfry. W takim przypadku ASCII jest - może zaskakujące - często bardziej kompaktowy niż postać binarna. Jeśli zastanawiasz się nad archiwizacją, wówczas skompresowanie tych plików ASCII prawdopodobnie zapewni najmniejsze pliki, jakie możesz uzyskać.
To powiedziawszy, Paraview czyta format VTU, który ma skompresowaną formę binarną (oparty na XML, ale dane są najpierw kompresowane w libz, a następnie ponownie kodowane w celu uzyskania tekstu ASCII). W przypadku typowych plików pozwala to zaoszczędzić współczynnik 4-10. W przypadku dużych plików jest to zdecydowanie najlepsza droga.
źródło