Uploaded image for project: 'Apache Avro'
  1. Apache Avro
  2. AVRO-2068

Improve EnumSchema constructor performance

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Trivial
    • Resolution: Unresolved
    • None
    • None
    • java
    • None

    Description

      at https://github.com/apache/avro/blob/master/lang/java/avro/src/main/java/org/apache/avro/Schema.java#L745 :

      ....
        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);
          }
      ....
      

      should be changed to:

      ....
        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);
          }
      ....
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            zolyfarkas Zoltan Farkas
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated: