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

Jens Geyer closed THRIFT-5337.
------------------------------

> Go set fields write improvement
> -------------------------------
>
>                 Key: THRIFT-5337
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5337
>             Project: Thrift
>          Issue Type: Improvement
>          Components: Go - Compiler
>            Reporter: BytedanceRPC
>            Assignee: BytedanceRPC
>            Priority: Major
>             Fix For: 0.15.0
>
>          Time Spent: 8h
>  Remaining Estimate: 0h
>
> There is a duplicate elements check for set in `writeFields*` function,  and 
> it compares elements using `reflect.DeepEqual` which is expensive.
> It's much faster that generates a "DeepEqual" function for set elements and 
> apply it in duplicate elements check, especially for nested struct element.
> For example, a thrift file like this:
>  
> {code:java}
> namespace go bytedance.thrift.example
> struct Simple {
>  1: set<double> DoubleSet
> }
> struct Base {
>  1: set<i64> I64Set
> }
> struct WrappedBase {
>  1: set<Base> BaseSet
> }
> struct Nested {
>  1: set<WrappedBase> WrappedBaseSet
> }
> {code}
>  
> Go generator would generate `Equals` method for structs defined in thrift 
> file.
> generated file diff: 
> https://gist.github.com/BytedanceRPC/1aa34b65cf4c9efabed0d0a115262d85
>  
>  
> Benchmark writeField1 for Simple and Nested:
> {code:java}
> name                 old time/op    new time/op    delta
> SimpleWriteField1-8     576ns ± 3%     435ns ± 3%  -24.56%  (p=0.000 n=10+10)
> NestedWriteField1-8     257µs ± 3%       3µs ± 5%  -98.71%  (p=0.000 
> n=10+10)name                 old alloc/op   new alloc/op   delta
> SimpleWriteField1-8      160B ± 0%      153B ± 0%   -4.58%  (p=0.000 n=8+9)
> NestedWriteField1-8    45.5kB ± 0%     0.4kB ± 1%  -99.23%  (p=0.000 
> n=9+10)name                 old allocs/op  new allocs/op  delta
> SimpleWriteField1-8      6.00 ± 0%      4.00 ± 0%  -33.33%  (p=0.000 n=10+10)
> NestedWriteField1-8     2.22k ± 0%     0.01k ± 0%  -99.68%  (p=0.000 n=10+10)
> {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to