Hello

We were doing application profiling and we discovered our application while 
it is fetching results from remote orientdb server spends *lots* of time 
(70%+) in the method 

*com.orientechnologies.orient.enterprise.channel.binary.OChannelBinary.readByte()*

The line wasting time is: *in.readByte();*  // in is a DataInputStream 
instance.

We verified that there are methods readInt(), readFloat(), etc.

Did you consider using a faster approach? It will accelerate speed access a 
lot.

For example, it is possible to read from the network and add it to a byte 
array object and access it with POJOs mapping the data directly in the byte 
array using methods in sun.misc.Unsafe. Something similar to what it is 
done 
in 
https://github.com/real-logic/Agrona/blob/master/src/main/java/org/agrona/UnsafeAccess.java
 
and 
https://github.com/real-logic/Agrona/blob/master/src/main/java/org/agrona/concurrent/UnsafeBuffer.java

There are several advantages including:

* zero copy
* less method calls.
* speed improvement (1 or 2 orders faster).

No sure how the odb server encodes its output, but if same approach is used 
in the server side, speed improvements could be huge.

I used these approach in exchange markets backend servers where a binary 
protocol is used (similar to orientdb binary protocol). 

P


-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to