You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Thiruvalluvan M. G. (JIRA)" <ji...@apache.org> on 2018/12/30 04:10:01 UTC

[jira] [Updated] (AVRO-2068) Improve EnumSchema constructor performance

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

Thiruvalluvan M. G. updated AVRO-2068:
--------------------------------------
    Component/s: java

> Improve EnumSchema constructor performance
> ------------------------------------------
>
>                 Key: AVRO-2068
>                 URL: https://issues.apache.org/jira/browse/AVRO-2068
>             Project: Apache Avro
>          Issue Type: Improvement
>          Components: java
>            Reporter: Zoltan Farkas
>            Priority: Trivial
>
> at https://github.com/apache/avro/blob/master/lang/java/avro/src/main/java/org/apache/avro/Schema.java#L745 :
> {code}
> ....
>   private static class EnumSchema extends NamedSchema {
>     private final List<String> symbols;
>     private final Map<String,Integer> ordinals;
>     public EnumSchema(Name name, String doc,
>         LockableArrayList<String> symbols) {
>       super(Type.ENUM, name, doc);
>       this.symbols = symbols.lock();
>       this.ordinals = new HashMap<String,Integer>();
>       int i = 0;
>       for (String symbol : symbols)
>         if (ordinals.put(validateName(symbol), i++) != null)
>           throw new SchemaParseException("Duplicate enum symbol: "+symbol);
>     }
> ....
> {code}
> should be changed to:
> {code}
> ....
>   private static class EnumSchema extends NamedSchema {
>     private final List<String> symbols;
>     private final Map<String,Integer> ordinals;
>     public EnumSchema(Name name, String doc,
>         LockableArrayList<String> symbols) {
>       super(Type.ENUM, name, doc);
>       this.symbols = symbols.lock();
>       this.ordinals = new HashMap<String,Integer>(symbols.size());
>       int i = 0;
>       for (String symbol : symbols)
>         if (ordinals.put(validateName(symbol), i++) != null)
>           throw new SchemaParseException("Duplicate enum symbol: "+symbol);
>     }
> ....
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)