在数据存储和全局变量之间做出决定
Deciding between datastore and global variables
描述
对于混合 C/C++(C++ 包装在 extern "C")应用程序我正在写我正在尝试决定是否包含我的程序需要的一些静态定义对我来说更好运行 作为全局变量或在每次 运行 时都需要读取的外部数据存储中(即 .csv 文件或 sql 数据库)。
我的静态定义,当放在 csv 文件中时,大约有 15 列,每列最多有 40 个定义(比开始时少,但由于特征缩放,最多 40 个)。
问题
我很难过,因为我觉得包含如此多的数据作为编译时随程序加载的全局变量是不对的。但是,每次 运行 程序编译后从数据存储读取的开销似乎是不必要的。
问题
此处的最佳做法是什么?我的代码需要具有足够的可移植性以供其他人理解,我不想混淆它。
出于速度原因和代码清晰度的考虑,静态定义这些变量。很好地布置您的定义并慷慨地评论以帮助未来的代码查看者。在文件中,您无法通过评论来告知未来的编辑所有内容。只是比较慢。
最好的做法是实现这两个选项,并根据内存、计算速度和其他负载条件灵活地在实现之间切换。
如果应用程序将在 运行 服务器端为 memory/cpu 分配大量资源,则应针对这些条件进行设计。为什么像你说的那样 "feel wrong"?
您的最终目标没有明确定义。所以混淆还不是问题。当您故意重定向您的代码以隐藏您的踪迹时,混淆就来了。但是,如果需要的话,制定一个完整的解决方案并不是混淆视听。
使用高级语言从 CSV 生成单独的 C 文件可能是合适的,例如Python。然后 #include
生成的文件(仅当使用 static
在单个模块中使用时),或作为单独的编译单元。
这样您就可以轻松更改您选择的 CSV/spreadsheet 程序中的值,同时所有数据仍然可用。代码生成程序可以被构建系统调用,所以不需要手动摆弄。
描述
对于混合 C/C++(C++ 包装在 extern "C")应用程序我正在写我正在尝试决定是否包含我的程序需要的一些静态定义对我来说更好运行 作为全局变量或在每次 运行 时都需要读取的外部数据存储中(即 .csv 文件或 sql 数据库)。
我的静态定义,当放在 csv 文件中时,大约有 15 列,每列最多有 40 个定义(比开始时少,但由于特征缩放,最多 40 个)。
问题
我很难过,因为我觉得包含如此多的数据作为编译时随程序加载的全局变量是不对的。但是,每次 运行 程序编译后从数据存储读取的开销似乎是不必要的。
问题
此处的最佳做法是什么?我的代码需要具有足够的可移植性以供其他人理解,我不想混淆它。
出于速度原因和代码清晰度的考虑,静态定义这些变量。很好地布置您的定义并慷慨地评论以帮助未来的代码查看者。在文件中,您无法通过评论来告知未来的编辑所有内容。只是比较慢。
最好的做法是实现这两个选项,并根据内存、计算速度和其他负载条件灵活地在实现之间切换。
如果应用程序将在 运行 服务器端为 memory/cpu 分配大量资源,则应针对这些条件进行设计。为什么像你说的那样 "feel wrong"?
您的最终目标没有明确定义。所以混淆还不是问题。当您故意重定向您的代码以隐藏您的踪迹时,混淆就来了。但是,如果需要的话,制定一个完整的解决方案并不是混淆视听。
使用高级语言从 CSV 生成单独的 C 文件可能是合适的,例如Python。然后 #include
生成的文件(仅当使用 static
在单个模块中使用时),或作为单独的编译单元。
这样您就可以轻松更改您选择的 CSV/spreadsheet 程序中的值,同时所有数据仍然可用。代码生成程序可以被构建系统调用,所以不需要手动摆弄。