You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "ZMZ91 (Jira)" <ji...@apache.org> on 2021/05/10 08:42:00 UTC

[jira] [Updated] (ARROW-12705) [C++][Gandiva] Performance issue for TreeExprBuilder::MakeIf when nested plenty times.

     [ https://issues.apache.org/jira/browse/ARROW-12705?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

ZMZ91 updated ARROW-12705:
--------------------------
    Description: 
Run following code, it hangs on the last line. Could you help check is this expected and any idea to optimize the usage? Thanks.
{code:c++}
auto top_node = TreeExprBuilder::MakeField(fielda);
 for (int64_t i = 0; i < 20; i++)
{   
  auto comp_node = TreeExprBuilder::MakeLiteral(i);
  auto when = TreeExprBuilder::MakeFunction("greater_than",
    {top_node,comp_node}, arrow::boolean());
  top_node = TreeExprBuilder::MakeIf(when, top_node, comp_node,
    arrow::int64());
 }
auto expr = TreeExprBuilder::MakeExpression(top_node, field_result);
std::shared_ptr<Projector> projector;
auto status = Projector::Make(schema, {expr}, TestConfiguration(),
  &projector);
{code}
 

  was:
Run following code, it hangs on the last line. Could you help check is this expected and any idea to optimize the usage? Thanks.

```c++

auto top_node = TreeExprBuilder::MakeField(fielda);
for (int64_t i = 0; i < 20; i++) {
  auto comp_node = TreeExprBuilder::MakeLiteral(i);
  auto when = TreeExprBuilder::MakeFunction("greater_than", \{top_node, comp_node}, arrow::boolean());
  top_node = TreeExprBuilder::MakeIf(when, top_node, comp_node, arrow::int64());
}

auto expr = TreeExprBuilder::MakeExpression(top_node, field_result);
std::shared_ptr<Projector> projector;
auto status = Projector::Make(schema, \{expr}, TestConfiguration(), &projector);

```


> [C++][Gandiva] Performance issue for TreeExprBuilder::MakeIf when nested plenty times.
> --------------------------------------------------------------------------------------
>
>                 Key: ARROW-12705
>                 URL: https://issues.apache.org/jira/browse/ARROW-12705
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: C++, C++ - Gandiva
>            Reporter: ZMZ91
>            Priority: Major
>
> Run following code, it hangs on the last line. Could you help check is this expected and any idea to optimize the usage? Thanks.
> {code:c++}
> auto top_node = TreeExprBuilder::MakeField(fielda);
>  for (int64_t i = 0; i < 20; i++)
> {   
>   auto comp_node = TreeExprBuilder::MakeLiteral(i);
>   auto when = TreeExprBuilder::MakeFunction("greater_than",
>     {top_node,comp_node}, arrow::boolean());
>   top_node = TreeExprBuilder::MakeIf(when, top_node, comp_node,
>     arrow::int64());
>  }
> auto expr = TreeExprBuilder::MakeExpression(top_node, field_result);
> std::shared_ptr<Projector> projector;
> auto status = Projector::Make(schema, {expr}, TestConfiguration(),
>   &projector);
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)