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

Pradeep Agrawal commented on RANGER-3386:
-----------------------------------------

Test case shall be junit test case, you can reuse the sample code you have 
added in description. 

> apache CollectionUtils package reduce ranger agent performance and should be 
> replaced
> -------------------------------------------------------------------------------------
>
>                 Key: RANGER-3386
>                 URL: https://issues.apache.org/jira/browse/RANGER-3386
>             Project: Ranger
>          Issue Type: Improvement
>          Components: plugins
>    Affects Versions: 2.0.1
>            Reporter: caozhiqiang
>            Assignee: caozhiqiang
>            Priority: Major
>         Attachments: CollectionUtils.png, RANGER-3386-branch-2.0.1.001.patch, 
> RANGER-3386-branch-2.0.1.002.patch
>
>
> org.apache.commons.collections.CollectionUtils' performance is too poor and 
> reduce the performance of ranger plugins, particularly with hdfs. There are 
> too many places used CollectionUtils.isNotEmpty and CollectionUtils.isEmpty 
> in agent component, so we should replace them.
> We can see many CollectionUtils call is take too much time in namenode 
> benchmark's result.
> In this patch, I replace almost CollectionUtils functions in agents-common. 
> After adding this patch, in creating file benchmark of hdfs, the performance 
> can improve from creating *7000* files to *7600* files per second.
> By the way, I write a simple test code below. collection.isEmpty is almost 
> take 0 milliseconds, but CollectionUtils.isNotEmpty take 5 milliseconds.
>  
> {code:java}
> List<Integer> list = new ArrayList<Integer>();
> for(int i = 0; i<1000; i++)
>     list.add(i);
> long startTime = System.currentTimeMillis();
> if(list != null && !list.isEmpty()){
> }
> long endTime   = System.currentTimeMillis();
> long totalTime = endTime - startTime;
> System.out.println(totalTime);
> long startTime2 = System.currentTimeMillis();
> CollectionUtils.isNotEmpty(list);
> long endTime2   = System.currentTimeMillis();
> long totalTime2 = endTime2 - startTime2;
> System.out.println(totalTime2);
> {code}
>  
> !CollectionUtils.png|width=680,height=324!



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

Reply via email to