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

Otavio Rodolfo Piske updated CAMEL-17559:
-----------------------------------------
    Description: 
While working on CAMEL-15562, with a very large directory tree, I noticed that 
sometimes it tends to perform a bit poorly when traversing very large directory 
trees.

I think we could explore migrating some of the camel-file code to use newer 
(and, sometimes better/faster) I/O APIs to improve the performance/scalability 
for extreme use cases.

Simulating the way Camel works now and comparing with some alternatives, 
indicates that there can be some possible performance gains (testOldIo is the 
current way the code works).


Testing in not-so-large directory with 100k files (10 directories with 10k 
files within each):
{code:java}
Java 17
Benchmark                          Mode  Cnt       Score      Error  Units
MyBenchmark.testNewIo              avgt   15   29468.995 ±  653.226  us/op
MyBenchmark.testNewIoWithStream    avgt   15   29563.389 ±  462.856  us/op
MyBenchmark.testNewIoWithTraverse  avgt   15  145232.034 ± 1467.996  us/op
MyBenchmark.testOldIo              avgt   15   44147.684 ±  723.055  us/op{code}
 
{code:java}
Java 11
Benchmark                          Mode  Cnt       Score      Error  Units
MyBenchmark.testNewIo              avgt   15   29471.651 ± 1105.507  us/op
MyBenchmark.testNewIoWithStream    avgt   15   28745.984 ±  616.324  us/op
MyBenchmark.testNewIoWithTraverse  avgt   15  149459.744 ± 2185.104  us/op
MyBenchmark.testOldIo              avgt   15   44486.002 ±  487.449  us/op 
{code}
 

  was:
While working on CAMEL-15562, with a very large directory tree, I noticed that 
sometimes it tends to perform a bit poorly when traversing very large directory 
trees.

I think we could explore migrating some of the camel-file code to use newer 
(and, sometimes better/faster) I/O APIs to improve the performance/scalability 
for extreme use cases. 



Simulating the way Camel works now and comparing with some alternatives, 
indicates that there can be some possible performance gains (testOldIo is the 
current way the code works).

 
{code:java}
Java 17
Benchmark                          Mode  Cnt       Score      Error  Units
MyBenchmark.testNewIo              avgt   15   29468.995 ±  653.226  us/op
MyBenchmark.testNewIoWithStream    avgt   15   29563.389 ±  462.856  us/op
MyBenchmark.testNewIoWithTraverse  avgt   15  145232.034 ± 1467.996  us/op
MyBenchmark.testOldIo              avgt   15   44147.684 ±  723.055  us/op
{code}
 


> camel-file: investigate performance improvements
> ------------------------------------------------
>
>                 Key: CAMEL-17559
>                 URL: https://issues.apache.org/jira/browse/CAMEL-17559
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-file
>            Reporter: Otavio Rodolfo Piske
>            Priority: Major
>
> While working on CAMEL-15562, with a very large directory tree, I noticed 
> that sometimes it tends to perform a bit poorly when traversing very large 
> directory trees.
> I think we could explore migrating some of the camel-file code to use newer 
> (and, sometimes better/faster) I/O APIs to improve the 
> performance/scalability for extreme use cases.
> Simulating the way Camel works now and comparing with some alternatives, 
> indicates that there can be some possible performance gains (testOldIo is the 
> current way the code works).
> Testing in not-so-large directory with 100k files (10 directories with 10k 
> files within each):
> {code:java}
> Java 17
> Benchmark                          Mode  Cnt       Score      Error  Units
> MyBenchmark.testNewIo              avgt   15   29468.995 ±  653.226  us/op
> MyBenchmark.testNewIoWithStream    avgt   15   29563.389 ±  462.856  us/op
> MyBenchmark.testNewIoWithTraverse  avgt   15  145232.034 ± 1467.996  us/op
> MyBenchmark.testOldIo              avgt   15   44147.684 ±  723.055  
> us/op{code}
>  
> {code:java}
> Java 11
> Benchmark                          Mode  Cnt       Score      Error  Units
> MyBenchmark.testNewIo              avgt   15   29471.651 ± 1105.507  us/op
> MyBenchmark.testNewIoWithStream    avgt   15   28745.984 ±  616.324  us/op
> MyBenchmark.testNewIoWithTraverse  avgt   15  149459.744 ± 2185.104  us/op
> MyBenchmark.testOldIo              avgt   15   44486.002 ±  487.449  us/op 
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to