You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2020/12/17 14:29:02 UTC

[ignite-3] branch ignite-13618 updated: Minor. Add more benchmarks.

This is an automated email from the ASF dual-hosted git repository.

amashenkov pushed a commit to branch ignite-13618
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/ignite-13618 by this push:
     new 17fc9ce  Minor. Add more benchmarks.
17fc9ce is described below

commit 17fc9ce1b87af3179927a0bfabb6693a8d3a5210
Author: Andrew Mashenkov <an...@gmail.com>
AuthorDate: Thu Dec 17 02:42:11 2020 +0300

    Minor. Add more benchmarks.
---
 .../generator/ObjectMarshallerCodeGenerator.java        |  2 +-
 .../marshaller/generator/SerializerGenerator.java       |  2 +-
 .../generator/TupleColumnAccessCodeGenerator.java       |  4 ++++
 .../schema/marshaller/reflection/FieldAccessor.java     |  5 ++---
 .../internal/benchmarks/SerializerBenchmarkTest.java    | 17 ++++++++++++++---
 5 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/generator/ObjectMarshallerCodeGenerator.java b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/generator/ObjectMarshallerCodeGenerator.java
index 36d0a27..d1fa6d1 100644
--- a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/generator/ObjectMarshallerCodeGenerator.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/generator/ObjectMarshallerCodeGenerator.java
@@ -93,7 +93,7 @@ class ObjectMarshallerCodeGenerator implements MarshallerCodeGenerator {
 
     /** {@inheritDoc} */
     @Override public CodeBlock getValueCode(String objVar, int i) {
-        return CodeBlock.of("FIELD_HANDLE_$L.get($L)", columnAccessessors[i].columnIdx(), objVar);
+        return CodeBlock.of("($T)FIELD_HANDLE_$L.get($L)", columnAccessessors[i].mappedType(), columnAccessessors[i].columnIdx(), objVar);
     }
 
     /** {@inheritDoc} */
diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/generator/SerializerGenerator.java b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/generator/SerializerGenerator.java
index cea5c62..33b8729 100644
--- a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/generator/SerializerGenerator.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/generator/SerializerGenerator.java
@@ -71,7 +71,7 @@ public class SerializerGenerator implements SerializerFactory {
 
             //TODO: pass code to logger on trace level.
 //            System.out.println("Serializer code generated in " + TimeUnit.NANOSECONDS.toMicros(generation) + "us");
-            //            System.out.println(javaFile.toString());
+//                        System.out.println(javaFile.toString());
 
             // Compile.
             long compilation = System.nanoTime();
diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/generator/TupleColumnAccessCodeGenerator.java b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/generator/TupleColumnAccessCodeGenerator.java
index c6addcf..54fd30f 100644
--- a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/generator/TupleColumnAccessCodeGenerator.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/generator/TupleColumnAccessCodeGenerator.java
@@ -254,4 +254,8 @@ public class TupleColumnAccessCodeGenerator {
                 .build();
         }
     }
+
+    public Class<?> mappedType() {
+        return mappedType;
+    }
 }
diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/FieldAccessor.java b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/FieldAccessor.java
index e8023fb..748ffec 100644
--- a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/FieldAccessor.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/FieldAccessor.java
@@ -30,12 +30,11 @@ import org.apache.ignite.internal.schema.TupleAssembler;
 import org.apache.ignite.internal.schema.marshaller.BinaryMode;
 import org.apache.ignite.internal.schema.marshaller.MarshallerUtil;
 import org.apache.ignite.internal.schema.marshaller.SerializationException;
-import org.jetbrains.annotations.Nullable;
 
 /**
  * Field accessor to speedup access.
  */
-public abstract class FieldAccessor {
+abstract class FieldAccessor {
     /** VarHandle. */
     protected final VarHandle varHandle;
 
@@ -358,7 +357,7 @@ public abstract class FieldAccessor {
      */
     public void read(Tuple reader, Object obj) throws SerializationException {
         try {
-            read0(reader, Objects.requireNonNull(obj));
+            read0(reader, obj);
         }
         catch (Exception ex) {
             throw new SerializationException("Failed to read field [id=" + colIdx + ']', ex);
diff --git a/modules/commons/src/test/java/org/apache/ignite/internal/benchmarks/SerializerBenchmarkTest.java b/modules/commons/src/test/java/org/apache/ignite/internal/benchmarks/SerializerBenchmarkTest.java
index 1896573..a6b893a 100644
--- a/modules/commons/src/test/java/org/apache/ignite/internal/benchmarks/SerializerBenchmarkTest.java
+++ b/modules/commons/src/test/java/org/apache/ignite/internal/benchmarks/SerializerBenchmarkTest.java
@@ -71,7 +71,7 @@ public class SerializerBenchmarkTest {
     private Factory<?> objectFactory;
 
     /** Object fields count. */
-    @Param({"10", "100"})
+    @Param({"0", "1", "10", "100"})
     public int fieldsCount;
 
     /** Serializer. */
@@ -100,8 +100,16 @@ public class SerializerBenchmarkTest {
 
         rnd = new Random(seed);
 
-        final Class<?> valClass = createGeneratedObjectClass(fieldsCount, Long.TYPE);
-        objectFactory = new ObjectFactory<>(valClass);
+        final Class<?> valClass;
+
+        if (fieldsCount == 0) {
+            valClass = Long.class;
+            objectFactory = (Factory<Object>)rnd::nextLong;
+        }
+        else {
+            valClass = createGeneratedObjectClass(fieldsCount, long.class);
+            objectFactory = new ObjectFactory<>(valClass);
+        }
 
         Columns keyCols = new Columns(new Column("key", LONG, true));
         Columns valCols = mapFieldsToColumns(valClass);
@@ -140,6 +148,9 @@ public class SerializerBenchmarkTest {
      * @return Columns for schema
      */
     private Columns mapFieldsToColumns(Class<?> aClass) {
+        if (aClass == Long.class)
+            return new Columns(new Column("col0", LONG, true));
+
         final Field[] fields = aClass.getDeclaredFields();
         final Column[] cols = new Column[fields.length];