在剪辑中复制环境的构造函数?
Copy construction for an enviromen in clips?
我想从现有的剪辑环境中构建至少数百个环境,然后 运行 在多线程中并发构建这些环境。
Dose clips是否支持此功能(例如深拷贝构造)?
或者如何实现这些功能?
我在我的c++项目中应用了clips的sourcecore。
现在我有一个包含很多的字符串 rules.If 我想同时执行多个请求,我必须多次调用创建方法,但是这次创建这么多相同的环境对我来说太昂贵了。
我用的是clips的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 倍。
我想从现有的剪辑环境中构建至少数百个环境,然后 运行 在多线程中并发构建这些环境。
Dose clips是否支持此功能(例如深拷贝构造)? 或者如何实现这些功能?
我在我的c++项目中应用了clips的sourcecore。 现在我有一个包含很多的字符串 rules.If 我想同时执行多个请求,我必须多次调用创建方法,但是这次创建这么多相同的环境对我来说太昂贵了。
我用的是clips的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 倍。