You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by "Emmanuel Lecharny (JIRA)" <ji...@apache.org> on 2015/03/18 18:14:38 UTC

[jira] [Commented] (DIRSTUDIO-1027) The LdifEditor parser is extremelly inefficient.

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

Emmanuel Lecharny commented on DIRSTUDIO-1027:
----------------------------------------------

Correction : the culprit is the {{LdifScanner}} class.

FTR, I tried loading a file which is 1Mb big, with 1670 entries : we do 278 459 {{arrayCopy}} calls. Suppressing one single attribute from the file results in 163 {{arrayCopy}} calls.

One of the other problem is that it put a lot of stress on the GC, as all the copied {{char[]}} will have to be garbage collected at some point.

> The LdifEditor parser is extremelly inefficient.
> ------------------------------------------------
>
>                 Key: DIRSTUDIO-1027
>                 URL: https://issues.apache.org/jira/browse/DIRSTUDIO-1027
>             Project: Directory Studio
>          Issue Type: Improvement
>    Affects Versions: 2.0.0-M8 (2.0.0.v20130628)
>            Reporter: Emmanuel Lecharny
>             Fix For: 2.0.0-M9
>
>
> Processing huge LDIF file is likely to take an enormous amount of time. The parser works in a way that we frequently fetch a char from a {{StringBuffer}}, to remove it later. When you have a 1Mb file, that induces the copy of a 1Mb array every time we don't need the char we just read.
> Typically, parsing a 1 237 chars file,  the {{noRead()}} method is called 393 times, and it calls the {{System.arrayCopy()}} the same number of time.



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