[
https://issues.apache.org/jira/browse/NIFI-1460?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15131590#comment-15131590
]
ASF GitHub Bot commented on NIFI-1460:
--------------------------------------
Github user trkurc commented on the pull request:
https://github.com/apache/nifi/pull/202#issuecomment-179579922
@taftster - code readability is subjective, I prefer actually prefer what
is in the PR. The String.format makes it an order of magnitude slower based on
my initial tests. I see no appreciable difference between StringBuffer and
StringBuilder
The results of the below code:
``
1 ===== 304 elapsed
2 ===== 1717 elapsed
3 ===== 248 elapsed
```
The StringBuffer is faster, but it is likely due to some of the JVM string
magic.
```java
int iter = 1<<20;
AtomicLong ai = new AtomicLong(0);
long now = System.currentTimeMillis();
for(int i=0; i < iter; i++) {
final String s=Long.toHexString(ai.getAndIncrement());
String x2 = new
StringBuilder("00000000-0000-0000-0000000000000000".substring(0,(35-s.length()))+s).insert(23,
'-').toString();
}
System.out.printf("1 ===== %d elapsed\n",
(System.currentTimeMillis() - now ));
now = System.currentTimeMillis();
for(int i=0; i < iter; i++) {
String x2 = new StringBuilder()
.append("00000000-0000-0000-")
.append(String.format("%016x", ai.getAndIncrement()))
.insert(23, '-')
.toString();
}
System.out.printf("2 ===== %d elapsed\n",
(System.currentTimeMillis() - now ));
now = System.currentTimeMillis();
for(int i=0; i < iter; i++) {
final String s=Long.toHexString(ai.getAndIncrement());
String x2 = new
StringBuffer("00000000-0000-0000-0000000000000000".substring(0,(35-s.length()))+s).insert(23,
'-').toString();
}
System.out.printf("3 ===== %d elapsed\n",
(System.currentTimeMillis() - now ));
```
> Test Performance improvement. Test Timeout Mitigation.
> ------------------------------------------------------
>
> Key: NIFI-1460
> URL: https://issues.apache.org/jira/browse/NIFI-1460
> Project: Apache NiFi
> Issue Type: Improvement
> Components: Core Framework, Tools and Build
> Affects Versions: 0.4.1
> Environment: linux, unix with true random number generator.
> Reporter: Puspendu Banerjee
> Assignee: Tony Kurc
> Priority: Minor
> Labels: performance
> Fix For: 0.6.0
>
> Original Estimate: 1h
> Remaining Estimate: 1h
>
> Existing test case
> nifi-framework-core/src/test/java/org/apache/nifi/controller/TestStandardFlowFileQueue.java
> uses a huge number of call to UUID.randomUUID() which is very slow in linux
> , unix environment if there is not much activity [ like mouse move etc.] .In
> addition to that UUID.randomUUID() depends on /dev/(u)random to get a random
> number, such system call costs IO and /dev/random is bandwidth/rate limited
> which again slows down overall performance.
> Workaround is rngd daemon(ref: http://linux.die.net/man/8/rngd)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)