diff --git a/avro-fastserde/src/jmh/java/com/linkedin/avro/fastserde/BenchmarkConstants.java b/avro-fastserde/src/jmh/java/com/linkedin/avro/fastserde/BenchmarkConstants.java
index a7e39dd49..7fc73b151 100644
--- a/avro-fastserde/src/jmh/java/com/linkedin/avro/fastserde/BenchmarkConstants.java
+++ b/avro-fastserde/src/jmh/java/com/linkedin/avro/fastserde/BenchmarkConstants.java
@@ -18,4 +18,9 @@ public class BenchmarkConstants {
* Size of the genreted AVRO Primitive Bytes
*/
public static final Integer BYTES_SIZE = 20;
+
+ /**
+ * Length of generated Float Array.
+ */
+ public static final Integer FLOAT_ARRAY_SIZE = 2500;
}
diff --git a/avro-fastserde/src/jmh/java/com/linkedin/avro/fastserde/FloatArrayBenchmark.java b/avro-fastserde/src/jmh/java/com/linkedin/avro/fastserde/FloatArrayBenchmark.java
new file mode 100644
index 000000000..6940f0d15
--- /dev/null
+++ b/avro-fastserde/src/jmh/java/com/linkedin/avro/fastserde/FloatArrayBenchmark.java
@@ -0,0 +1,132 @@
+package com.linkedin.avro.fastserde;
+
+import com.linkedin.avro.fastserde.generated.avro.FloatArrayBenchmarkSchema;
+import com.linkedin.avro.fastserde.generator.AvroRandomDataGenerator;
+import com.linkedin.avro.fastserde.micro.benchmark.AvroGenericSerializer;
+import com.linkedin.avroutil1.compatibility.AvroCompatibilityHelper;
+import java.io.ByteArrayInputStream;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
+import org.apache.avro.Schema;
+import org.apache.avro.generic.GenericData;
+import org.apache.avro.generic.GenericDatumReader;
+import org.apache.avro.generic.GenericRecord;
+import org.apache.avro.io.BinaryDecoder;
+import org.apache.avro.io.DatumReader;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.OperationsPerInvocation;
+import org.openjdk.jmh.annotations.OutputTimeUnit;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.infra.Blackhole;
+import org.openjdk.jmh.profile.GCProfiler;
+import org.openjdk.jmh.runner.Runner;
+import org.openjdk.jmh.runner.RunnerException;
+import org.openjdk.jmh.runner.options.OptionsBuilder;
+
+
+/**
+ * A benchmark that evaluates the performance of PrimitiveFloatList access
+ *
+ * To run this benchmark:
+ *
+ * ./gradlew :avro-fastserde:jmh -PUSE_AVRO_18
+ *
+ *
+ */
+@State(Scope.Benchmark)
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.NANOSECONDS)
+@Fork(1)
+//@Fork(value = 1, jvmArgsAppend = {"-XX:+PrintGCDetails", "-Xms16g", "-Xmx16g"})
+//@Threads(10)
+@Warmup(iterations = 3)
+@Measurement(iterations = 3)
+public class FloatArrayBenchmark {
+ private static final int NUMBER_OF_OPERATIONS = 100_000;
+
+ private final Random random = new Random();;
+ private final Map