diff --git a/library/src/main/java/com/bumptech/glide/load/MultiTransformation.java b/library/src/main/java/com/bumptech/glide/load/MultiTransformation.java
index 9f5ed65..9e3a359 100644
--- a/library/src/main/java/com/bumptech/glide/load/MultiTransformation.java
+++ b/library/src/main/java/com/bumptech/glide/load/MultiTransformation.java
@@ -10,6 +10,7 @@
 public class MultiTransformation<T> implements Transformation<T> {
     private Transformation<T>[] transformations;
     private List<Transformation<T>> transformationList;
+    private String id;
 
     public MultiTransformation(Transformation<T>... transformations) {
         if (transformations.length < 1) {
@@ -53,10 +54,19 @@
 
     @Override
     public String getId() {
-        StringBuilder sb = new StringBuilder();
-        for (Transformation transformation : transformations) {
-            sb.append(transformation.getId());
+        if (id == null) {
+            StringBuilder sb = new StringBuilder();
+            if (transformations != null) {
+                for (Transformation transformation : transformations) {
+                    sb.append(transformation.getId());
+                }
+            } else {
+                for (Transformation transformation : transformationList) {
+                    sb.append(transformation.getId());
+                }
+            }
+            id = sb.toString();
         }
-        return sb.toString();
+        return id;
     }
 }
diff --git a/library/src/test/java/com/bumptech/glide/load/MultiTransformationTest.java b/library/src/test/java/com/bumptech/glide/load/MultiTransformationTest.java
index b25fd11..55b4e66 100644
--- a/library/src/test/java/com/bumptech/glide/load/MultiTransformationTest.java
+++ b/library/src/test/java/com/bumptech/glide/load/MultiTransformationTest.java
@@ -3,6 +3,8 @@
 import com.bumptech.glide.Resource;
 import org.junit.Test;
 
+import java.util.ArrayList;
+
 import static junit.framework.Assert.assertEquals;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyInt;
@@ -27,7 +29,17 @@
 
         MultiTransformation transformation = new MultiTransformation(first, second, third);
 
-        assertEquals(firstId + secondId + thirdId, transformation.getId());
+        final String expected = firstId + secondId + thirdId;
+        assertEquals(expected, transformation.getId());
+
+        ArrayList<Transformation> transformations = new ArrayList<Transformation>();
+        transformations.add(first);
+        transformations.add(second);
+        transformations.add(third);
+
+        transformation = new MultiTransformation(transformations);
+
+        assertEquals(expected, transformation.getId());
     }
 
     @Test
