我想从现有剪辑环境中构建至少数百个环境,然后在多线程中同时运行这些环境。
剂量夹支持此功能(例如,深层复制构造)?
或如何实现这些功能?
我在我的c++项目中应用了剪辑的sourcecore。
现在,我有一个包含许多规则的字符串。如果我想同时执行多个请求,则必须多次调用create方法,但这一次对我来说创建太多相同的env太昂贵了。
我使用剪辑的C代码。
以下是我的创建过程:
std::unique_ptr<void> CreateClips(const string &rules) {
std::unique_ptr<void> clips(CreateEnvironment());
if (!clips) {
throw runtime_error("[FATAL] clips CreateEnvironment() failed");
}
int retcode;
retcode = ClipsEnvLoadFromString(clips.get(), rules);
if (retcode != 1) {
throw runtime_error("[FATAL] clips EvnLoadFromString() failed, " +
rules);
}
return clips;
}
最佳答案
没有深层复制功能。如果使用bsave函数将规则保存为二进制格式,则可以使用bload函数更快地加载它们。随着二进制图像中构造数量的增加,加速也随之增加。对于具有大约30条规则的系统,我看到的加速比大约快9倍;对于具有大约660条规则的系统,我看到的加速比大约快47倍。