Zoltan Farkas created AVRO-2068:
-----------------------------------

             Summary: Improve EnumSchema constructor performance
                 Key: AVRO-2068
                 URL: https://issues.apache.org/jira/browse/AVRO-2068
             Project: Avro
          Issue Type: Improvement
            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
(v6.4.14#64029)

Reply via email to