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

Bryan Duxbury updated THRIFT-248:
---------------------------------

    Attachment: thrift-248-v5.patch

Ok, this edition has c-implemented read and write methods on 
Thrift::MemoryBuffer, and that brings it to only about 2x as slow. Here's the 
table, again:

||version||write time||read time||
|Trunk, ruby binary protocol|5.170s|3.925s|
|Trunk BinaryProtocolAccelerated|0.588s|0.479s|
|thrift_native, pure ruby binary protocol|1.88s|2.82s|
|thrift_native, c binary protocol|1.14s|1.26|
|thrift_native, c binary protocol, (partial)c MemoryBuffer|0.994s|0.818s|

I think we're down to method call overhead and the use of a partially-native 
transport. We can consider the function pointer approach of short-circuiting 
ruby method calls, if we want, and see how that performs.

> Factor BinaryProtocolAccelerated into separate protocol and struct components
> -----------------------------------------------------------------------------
>
>                 Key: THRIFT-248
>                 URL: https://issues.apache.org/jira/browse/THRIFT-248
>             Project: Thrift
>          Issue Type: Improvement
>          Components: Library (Ruby)
>            Reporter: Bryan Duxbury
>            Assignee: Bryan Duxbury
>            Priority: Minor
>         Attachments: thrift-248-v2.patch, thrift-248-v3.patch, 
> thrift-248-v4.patch, thrift-248-v5.patch, thrift-248.patch
>
>
> Kevin Clark's excelled BinaryProtocolAccelerated implementation in the Ruby 
> library is very fast, in large part due to the fact that it implements not 
> just the protocol but also the struct components of serialization directly as 
> a C extension. The problem with this arrangement is that other protocols that 
> would benefit from accelerated struct code don't get the benefit. In 
> particular, I'd like to make my implementation of the Compact Protocol fast 
> in Ruby, and the key appears to be the struct serialization code. 
> I think that we should make an effort to divorce the struct stuff from the 
> protocol stuff in BinaryProtocolAccelerated, so that all protocols can 
> benefit. Some quick benchmarking seems to indicate that there is going to be 
> some additional method call overhead in this situation, but it's not really 
> that substantial. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to