簡體   English   中英

讀取/寫入大型場景文件的有效方法

[英]An efficient way to read/write a large scene file

我有一個很大的場景(在多個網格中包含數百萬甚至數十億個多邊形)文件要加載或寫入到內部游戲引擎中,我想知道是否有人可以提示我加載該場景的最快方法是什么文件。

我已經在網上做了一些研究,文件加載有三種主要方式:分塊讀取/寫入,文件映射以及在多個線程上讀取/寫入。 我還了解到,如果程序讀取/寫入單個文件,則使用多個線程似乎是不合適的。 因此,在整個場景加載/寫入機制中,使用fread()/ fwrite()(c ++中的方法)將整個場景中的所有數據作為一個巨大的內存來讀寫似乎是一個不錯的選擇。 我想知道每種文件加載/寫入方法的優缺點,以及fread()/ fwrite()是否足以處理大型場景文件的IO進程。

提前致謝。

無論您要編寫什么代碼,很可能硬件都是瓶頸(因此,沒有任何軟件技巧可以緩解這一問題)。

(我猜您在Linux上)

您可以使用按需閱讀,並使用一些更高層次的庫,例如GDBMsqlite

如果您執行低級IO(因此沒有此類庫),請考慮使用特定於Linux的readahead(2) ,更可能使用posix_fadvise(2) (如果使用mmap則使用madvise(2) )。

當然,良好的緩沖是必不可少的(如果使用<stdio.h> ,它可能比C ++流更有效,請考慮使用setvbuf(3) ...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM