gpt4 book ai didi

c++ - 将结果存储在单独的库中以供以后加载

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:09 25 4
gpt4 key购买 nike

如果我有一些可以在编译时计算的结果集,并且我想在程序的其他地方使用它们,我可以将它们放在一个(共享的?)库中以供以后链接吗?这样会慢吗?

例如,我可以在编译时使用

计算阶乘
template<size_t N>
struct Factorial {
constexpr static size_t value = Factorial<N-1>::value * N;
};

template<>
struct Factorial<0> {
constexpr static size_t value = 1;
};

// Possibly an instantiation for a max value?
// template class Factorial<50>;

然后为了在代码中使用它,我只写 Factorial<32>::value ,或类似的。

如果我假设我的真实值需要更长的时间来计算,那么我可能想确保它们不会在每个构建/任何认为旧构建无效的构建上重新计算。

因此,我将计算代码移到一个单独的项目中,并将其编译为共享库。

现在,为了使用它,我将我的主程序链接到库,并且 #include标题。

然而,库文件相当小(而且看起来独立于创建模板所传递的值),所以我想知道实际上库是否只包含创建 Factorial 的方法。结构,而不是预先计算的数据。

如何计算一系列值,然后在单独的程序中使用它们?

首选提供编译时值注入(inject)的解决方案 - 我注意到加载共享库不属于此类(我认为)

最佳答案

这里发生的是进行计算的实际“代码”仍在标题中。将它放入共享库并没有真正做任何事情;编译器仍在为您的主程序重新计算阶乘。 (所以,你的直觉是正确的。)

更好的方法是编写另一个程序,将值吐出作为 C++ 常量数组的源代码,然后将它们复制并粘贴到您的代码中。这可能需要大约 5 行 Python,而您的 C++ 代码将快速编译和运行。

关于c++ - 将结果存储在单独的库中以供以后加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33360222/

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