我想从现有剪辑环境中构建至少数百个环境,然后在多线程中同时运行这些环境。

剂量夹支持此功能(例如,深层复制构造)?
或如何实现这些功能?

我在我的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倍。

09-11 17:27