gpt4 book ai didi

c++ - 一种读取/写入大型场景文件的有效方法

转载 作者:行者123 更新时间:2023-11-28 02:10:56 25 4
gpt4 key购买 nike

我有一个大场景(在多个网格中包含数百万甚至数十亿个多边形)文件要加载或写入内部游戏引擎,我想知道是否有人可以给我提示最快的方法是什么加载该场景文件。

在网上查了一下,文件加载主要有三种方式:分块读/写、文件映射和多线程读/写。我还了解到,如果程序读/写单个文件,使用多线程似乎是不合适的。因此,在我的场景加载/写入机制中,使用 fread()/fwrite()(c++ 中的方法)将整个场景中的所有数据管理为要读取/写入的巨大内存块似乎是一个不错的选择。我想知道每种文件加载/写入方法的优缺点是什么,以及 fread()/fwrite() 是否足以处理大型场景文件的 IO 进程。

提前致谢。

最佳答案

无论您编写什么代码,硬件很可能会成为瓶颈(因此没有任何软件技巧可以缓解这一点)。

(我猜你在 Linux 上)

您可以使用需求阅读并使用一些更高级别的库,例如 GDBMsqlite .

如果您执行低级 IO(所以没有这样的库),请考虑使用 Linux 特定的 readahead(2)更有可能 posix_fadvise(2) (或 madvise(2) 如果你 mmap )

当然,良好的缓冲是必不可少的(如果使用 <stdio.h> ,这可能比 C++ 流更有效,请考虑 setvbuf(3) ...)

关于c++ - 一种读取/写入大型场景文件的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35705859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com