diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/LPaint.java b/lottie/src/main/java/com/airbnb/lottie/animation/LPaint.java
new file mode 100644
index 0000000..0462a1d
--- /dev/null
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/LPaint.java
@@ -0,0 +1,25 @@
+package com.airbnb.lottie.animation;
+
+import android.graphics.Paint;
+import android.os.LocaleList;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Custom paint that doesn't set text locale.
+ * It takes ~1ms on initialization and isn't needed so removing it speeds up
+ * setComposition.
+ */
+public class LPaint extends Paint {
+    public LPaint() {
+    }
+
+    public LPaint(int flags) {
+        super(flags);
+    }
+
+    @Override
+    public void setTextLocales(@NonNull LocaleList locales) {
+        // Do nothing.
+    }
+}
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/BaseStrokeContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/BaseStrokeContent.java
index af64225..06080dd 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/BaseStrokeContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/BaseStrokeContent.java
@@ -14,6 +14,7 @@
 import com.airbnb.lottie.L;
 import com.airbnb.lottie.LottieDrawable;
 import com.airbnb.lottie.LottieProperty;
+import com.airbnb.lottie.animation.LPaint;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.IntegerKeyframeAnimation;
@@ -43,7 +44,7 @@
   private final BaseLayer layer;
   private final List<PathGroup> pathGroups = new ArrayList<>();
   private final float[] dashPatternValues;
-  final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
+  final Paint paint = new LPaint(Paint.ANTI_ALIAS_FLAG);
 
   private final BaseKeyframeAnimation<?, Float> widthAnimation;
   private final BaseKeyframeAnimation<?, Integer> opacityAnimation;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java
index 1adc88b..4e3b838 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/FillContent.java
@@ -11,6 +11,7 @@
 import com.airbnb.lottie.L;
 import com.airbnb.lottie.LottieDrawable;
 import com.airbnb.lottie.LottieProperty;
+import com.airbnb.lottie.animation.LPaint;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.ColorKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation;
@@ -28,7 +29,7 @@
 public class FillContent
     implements DrawingContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent {
   private final Path path = new Path();
-  private final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
+  private final Paint paint = new LPaint(Paint.ANTI_ALIAS_FLAG);
   private final BaseLayer layer;
   private final String name;
   private final boolean hidden;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientFillContent.java b/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientFillContent.java
index d6f64da..effa0fe 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientFillContent.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/content/GradientFillContent.java
@@ -17,6 +17,7 @@
 import com.airbnb.lottie.L;
 import com.airbnb.lottie.LottieDrawable;
 import com.airbnb.lottie.LottieProperty;
+import com.airbnb.lottie.animation.LPaint;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation;
 import com.airbnb.lottie.model.KeyPath;
@@ -45,7 +46,7 @@
   private final LongSparseArray<RadialGradient> radialGradientCache = new LongSparseArray<>();
   private final Matrix shaderMatrix = new Matrix();
   private final Path path = new Path();
-  private final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
+  private final Paint paint = new LPaint(Paint.ANTI_ALIAS_FLAG);
   private final RectF boundsRect = new RectF();
   private final List<PathContent> paths = new ArrayList<>();
   private final GradientType type;
diff --git a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.java b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.java
index 3dd38df..f3ccf25 100644
--- a/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.java
+++ b/lottie/src/main/java/com/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation.java
@@ -1,5 +1,7 @@
 package com.airbnb.lottie.animation.keyframe;
 
+import android.util.Log;
+
 import com.airbnb.lottie.value.Keyframe;
 import com.airbnb.lottie.value.LottieValueCallback;
 
@@ -19,7 +21,7 @@
   }
 
   // This is not a Set because we don't want to create an iterator object on every setProgress.
-  final List<AnimationListener> listeners = new ArrayList<>();
+  final List<AnimationListener> listeners = new ArrayList<>(1);
   private boolean isDiscrete = false;
 
   private final List<? extends Keyframe<K>> keyframes;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeData.java b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeData.java
index e1413a2..7fdfda9 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeData.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/content/ShapeData.java
@@ -11,17 +11,18 @@
 import java.util.List;
 
 public class ShapeData {
-  private final List<CubicCurveData> curves = new ArrayList<>();
+  private final List<CubicCurveData> curves;
   private PointF initialPoint;
   private boolean closed;
 
   public ShapeData(PointF initialPoint, boolean closed, List<CubicCurveData> curves) {
     this.initialPoint = initialPoint;
     this.closed = closed;
-    this.curves.addAll(curves);
+    this.curves = new ArrayList<>(curves);
   }
 
   public ShapeData() {
+    curves = new ArrayList<>();
   }
 
   private void setInitialPoint(float x, float y) {
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java
index bc93848..f18f269 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/BaseLayer.java
@@ -9,6 +9,7 @@
 import com.airbnb.lottie.L;
 import com.airbnb.lottie.LottieComposition;
 import com.airbnb.lottie.LottieDrawable;
+import com.airbnb.lottie.animation.LPaint;
 import com.airbnb.lottie.animation.content.Content;
 import com.airbnb.lottie.animation.content.DrawingContent;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
@@ -62,11 +63,11 @@
 
   private final Path path = new Path();
   private final Matrix matrix = new Matrix();
-  private final Paint contentPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
-  private final Paint addMaskPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
-  private final Paint subtractMaskPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
-  private final Paint mattePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
-  private final Paint clearPaint = new Paint();
+  private final Paint contentPaint = new LPaint(Paint.ANTI_ALIAS_FLAG);
+  private final Paint addMaskPaint = new LPaint(Paint.ANTI_ALIAS_FLAG);
+  private final Paint subtractMaskPaint = new LPaint(Paint.ANTI_ALIAS_FLAG);
+  private final Paint mattePaint = new LPaint(Paint.ANTI_ALIAS_FLAG);
+  private final Paint clearPaint = new LPaint();
   private final RectF rect = new RectF();
   private final RectF maskBoundsRect = new RectF();
   private final RectF matteBoundsRect = new RectF();
@@ -224,7 +225,7 @@
     getBounds(rect, matrix, false);
 
     // Uncomment this to draw matte outlines.
-    /* Paint paint = new Paint();
+    /* Paint paint = new LPaint();
     paint.setColor(Color.RED);
     paint.setStyle(Paint.Style.STROKE);
     paint.setStrokeWidth(3);
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/ImageLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/ImageLayer.java
index af5bc86..f7e9186 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/ImageLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/ImageLayer.java
@@ -12,6 +12,7 @@
 
 import com.airbnb.lottie.LottieDrawable;
 import com.airbnb.lottie.LottieProperty;
+import com.airbnb.lottie.animation.LPaint;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation;
 import com.airbnb.lottie.utils.Utils;
@@ -19,7 +20,7 @@
 
 public class ImageLayer extends BaseLayer {
 
-  private final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
+  private final Paint paint = new LPaint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
   private final Rect src = new Rect();
   private final Rect dst = new Rect();
   @Nullable private BaseKeyframeAnimation<ColorFilter, ColorFilter> colorFilterAnimation;
diff --git a/lottie/src/main/java/com/airbnb/lottie/model/layer/SolidLayer.java b/lottie/src/main/java/com/airbnb/lottie/model/layer/SolidLayer.java
index b2aec41..23e7cb3 100644
--- a/lottie/src/main/java/com/airbnb/lottie/model/layer/SolidLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/model/layer/SolidLayer.java
@@ -11,14 +11,14 @@
 
 import com.airbnb.lottie.LottieDrawable;
 import com.airbnb.lottie.LottieProperty;
+import com.airbnb.lottie.animation.LPaint;
 import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
 import com.airbnb.lottie.animation.keyframe.ValueCallbackKeyframeAnimation;
 import com.airbnb.lottie.value.LottieValueCallback;
 
 public class SolidLayer extends BaseLayer {
-
   private final RectF rect = new RectF();
-  private final Paint paint = new Paint();
+  private final Paint paint = new LPaint();
   private final float[] points = new float[8];
   private final Path path = new Path();
   private final Layer layerModel;
diff --git a/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java b/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
index 9956ae9..5bf7e00 100644
--- a/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
+++ b/lottie/src/main/java/com/airbnb/lottie/utils/Utils.java
@@ -15,6 +15,7 @@
 import androidx.annotation.Nullable;
 
 import com.airbnb.lottie.L;
+import com.airbnb.lottie.animation.LPaint;
 import com.airbnb.lottie.animation.content.TrimPathContent;
 import com.airbnb.lottie.animation.keyframe.FloatKeyframeAnimation;
 
@@ -207,7 +208,7 @@
     path.computeBounds(bounds, false);
     Bitmap bitmap = Bitmap.createBitmap((int) bounds.right, (int) bounds.bottom, Bitmap.Config.ARGB_8888);
     Canvas canvas = new Canvas(bitmap);
-    Paint paint = new Paint();
+    Paint paint = new LPaint();
     paint.setAntiAlias(true);
     paint.setColor(Color.BLUE);
     canvas.drawPath(path, paint);
