我需要一种在 DLL 中存储大量数字只读数据(双值)的方法。数据必须嵌入到源代码中,因为它会不时更改 - 没有 Visual Studio 等外部工具,只有代码生成 + shell 编译器。
我知道这是一种不好的做法,但这是“业务需求”。
我需要存储大约2 000 000 个 32 位浮点值。这应该是大约 8MB 的原始数据。假设 DLL 大小限制为 100MB。语言是Fortran。
我的第一个想法是为动态数组生成值分配:
work(1,1,1,1) = 826
work(1,1,1,2) = 935
work(1,1,1,3) = 712.5
work(1,1,1,4) = 617.1
work(1,1,1,5) = 102.2
但最终的源文件大约有 70 兆字节,编译的机会为 0(编译器内存不足错误)。此外,即使它可以编译,最终的 DLL 对于每 0.5MB 有用数据的大小约为 5MB。
任何想法以更紧凑的方式格式化源代码(编译器优化友好?)或者可能将数据打包到其他结构,如字符串/原始二进制数据并在运行时提取?