Копировать конструкцию для окружающей среды в клипах? - PullRequest
1 голос
/ 07 октября 2019

Я хочу создать как минимум сотни сред из существующего окружения клипов, а затем запустить их одновременно в многопоточности.

Дозовые клипы поддерживают эту функцию (например, глубокое копирование)? Или как я могу реализовать эти функции?

Я применяю исходное ядро ​​клипов в своем проекте c ++. Теперь у меня есть строка, которая содержит много правил. Если я хочу выполнить несколько запросов одновременно, я должен вызвать метод 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;
}

1 Ответ

0 голосов
/ 07 октября 2019

Нет функции глубокого копирования. Если вы сохраняете свои правила в двоичном формате, используя функцию bsave, вы можете загружать их намного быстрее, используя функцию bload. Ускорение увеличивается с увеличением числа конструкций в двоичном изображении. Для системы с примерно 30 правилами я вижу ускорение примерно в 9 раз быстрее, а для системы с примерно 660 правилами я вижу ускорение примерно в 47 раз.

...