首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Open Policy Agent -提高分组理解的性能

Open Policy Agent -提高分组理解的性能
EN

Stack Overflow用户
提问于 2021-02-05 03:05:13
回答 1查看 47关注 0票数 0

我有一个id和角色映射,格式如下

代码语言:javascript
复制
{
    "ra": [
      {
        "id": 168,
        "code": "AFAP"
      },
      {
        "id": 180,
        "code": "ABC"
      },
      {
        "id": 180,
        "code": "ABCMND"
      }
   ]
}

我需要输出如下所示

代码语言:javascript
复制
{
    "roleactions": {
        "168": [
            "AFAP"
        ],
        "180": [
            "ABC",
            "ABCMND",
            "DCRMP"
        ]
    }
}

所以我写了下面的代码

代码语言:javascript
复制
roleactions = r_map {
    r := data.ra
    r_map := {id: list |
        some i
        id := r[i].id
        list := [obj |
            some j
            r[j].id == id
            obj := r[j].code
        ]
    }
}

但是当我运行它的时候几乎需要5-6秒

在5682526.465µs内找到1个结果。

有人可以指导如何编写此策略映射以提高性能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-05 03:37:34

OPA可以在线性时间内评估这样的理解:https://www.openpolicyagent.org/docs/latest/policy-performance/#comprehension-indexing。这种情况下的问题是,当单独考虑理解时,局部变量r是不安全的。

如果你像下面这样重构理解,运行时应该是线性的:

代码语言:javascript
复制
roleactions := r_map {
    r_map := {id: list |
        some i
        id := data.ra[i].id
        list := [obj |
            some j
            data.ra[j].id == id
            obj := data.ra[j].code
        ]
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66052212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档