将资源文件嵌入可执行文件的性能
Performance of embedding resource files into executable
最近我在这里发现了如何将资源文件嵌入到可执行文件中。还有xxd方法。考虑到这个新发现的玩具,我最初用来将GLSL着色器的文本嵌入到我的游戏中,现在我想嵌入游戏所需的每个资源文件。
目前我只有几kb的三维网格数据,但在这个数字增长之前,我想知道在可执行文件中嵌入多少数据是可行的?如果我在里面放几个千兆字节的纹理数据,可以吗?滥用此功能的性能惩罚是什么?
这种资源分配方法的缺点是,在应用程序的整个过程中,所有资源都将存在于虚拟内存中。
例如,如果你的游戏中有10个级别,使用更常见的基于文件的存储解决方案,你只会加载你要玩的任何级别的数据。通过在运行时加载所有游戏数据,您可以分配比所需更多的RAM。使用最少量RAM的解决方案只会在需要的时间内加载所需的资源。
但是,如果要为资源使用基于文件的存储解决方案,并在执行开始时加载所有资源,则RAM的使用将与静态分配的资源方法相同。
此外,如果你的目标机器是一台不进行多任务处理的简单游戏机,那么你通常可以自由使用可用资源,以最适合你的方式使用。没有"玩得好"的要求,因为通常一次只有一个游戏在运行。
如果你在现代系统上处理的是几兆字节的数据,那么损失是可以忽略不计的,但当你处理多个千兆字节的数据时,性能损失是你会对系统的可用内存资源造成不必要的压力。
编辑:一定要看到评论中提出的要点
相关文章:
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- CMake:如何将库 A 链接到库 B,然后将可执行文件链接到库 A
- 如何使字符串出现在编译的二进制可执行文件的开头?
- 程序在使用 system() 启动另一个可执行文件时停止
- 如何更改使用 CPack 安装的可执行文件的名称?
- 在Linux上使用Clang / OLLVM交叉编译helloworld Windows可执行文件时的问题
- CMake:我们可以为一组不形成可执行文件或库的特定文件指定包含目录吗?
- 如何将图像传入C++可执行文件并将输出图像存储在新目录中?
- 共享库 (.so) 没有扩展名的 Linux 可执行文件之间的区别?
- 如何在 linux 可执行文件中使用静态库
- 错误:当我从"WinDbg"打开可执行文件时,找不到符号文件。默认导出 ntdll 的符号.dll
- 编译的C可执行文件被Windows defender检测为病毒
- Linux 可执行文件通过 dlopen 在emplace_back崩溃打开共享库
- 是否可以在命令行中将输入参数传递给可执行文件
- 如何在可执行文件中存储常量数组?
- 如果包含映射的静态库与可执行文件和动态库链接,静态映射(变量)是否会被多次释放?
- 与直接编译的可执行文件相比,linux.so的性能有所下降
- vsinstr.exe检测了大型可执行文件的性能
- 将资源文件嵌入可执行文件的性能