[ 
https://issues.apache.org/jira/browse/S2GRAPH-16?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15101146#comment-15101146
 ] 

ASF GitHub Bot commented on S2GRAPH-16:
---------------------------------------

Github user hsleep commented on the pull request:

    https://github.com/apache/incubator-s2graph/pull/6#issuecomment-171863628
  
    I have tested this PR using below command.
    ```
    sbt test
    ```
    
    But following errors are occurred at the compile time.
    ```
    ...
    [error] 
/Users/hsleep/git/incubator-s2graph/s2core/src/test/scala/com/kakao/s2graph/core/parsers/WhereParserTest.scala:34:
 type mismatch;
    [error]  found   : Map[String,com.kakao.s2graph.core.mysqls.Label]
    [error]  required: com.kakao.s2graph.core.mysqls.Label
    [error]     val whereOpt = WhereParser(labelMap).parse(sql)
    [error]                                ^
    [error] one error found
    ...
    ```


> Performance tunning on where parser
> -----------------------------------
>
>                 Key: S2GRAPH-16
>                 URL: https://issues.apache.org/jira/browse/S2GRAPH-16
>             Project: S2Graph
>          Issue Type: Improvement
>            Reporter: DOYUNG YOON
>            Assignee: DOYUNG YOON
>              Labels: performance
>   Original Estimate: 336h
>  Remaining Estimate: 336h
>
> Current implementation has critical performance problem on IN parser. 
> ex) where: age in(1, 2, 3, 4, 5 ...)  / where: _parent.age in (1, 2, 3, 4, 5, 
> …)
> when the query has M edges as result with N elements in IN clause, then IN 
> case class that create N innerVal set and check if this edge`s property value 
> is in this N innerVal set. The most problematic part is building N innerVal 
> set from user query is executed M times(number of result edges, usually 
> hundreds to thousands). 
> This create lots of object which create lots of GC and waste lots of cpu 
> resources.
> We can improve this by reducing number of calls to build values to compare on 
> IN.
> building InnerVal set(from above example, it is build 1,2,3,4,5) for value to 
> compare only need to be perform once per each query and never be dependent to 
> number of result edges. only checking against built InnerVal set should be 
> dependent to number of result edges.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to