diff --git a/src/UiPatternsManager.php b/src/UiPatternsManager.php
index 254f8a25981bebf0bc50893637baf7044baeb691..9f1a0d0000b1b680fe2c05c5b8880af786229ffe 100644
--- a/src/UiPatternsManager.php
+++ b/src/UiPatternsManager.php
@@ -26,6 +26,13 @@ class UiPatternsManager extends DefaultPluginManager implements PluginManagerInt
    */
   protected $themeHandler;
 
+  /**
+   * An array of pattern theme hooks for fast lookup.
+   *
+   * @var array
+   */
+  protected $patternHooks;
+
   /**
    * UiPatternsManager constructor.
    */
@@ -85,10 +92,12 @@ class UiPatternsManager extends DefaultPluginManager implements PluginManagerInt
    * {@inheritdoc}
    */
   public function isPatternHook($hook) {
-    $definitions = array_filter($this->getDefinitions(), function (PatternDefinition $definition) use ($hook) {
-      return $definition->getThemeHook() == $hook;
-    });
-    return !empty($definitions);
+    if (empty($this->patternHooks)) {
+      foreach ($this->getDefinitions() as $definition) {
+        $this->patternHooks[$definition->getThemeHook()] = $definition->getThemeHook();
+      }
+    }
+    return !empty($this->patternHooks[$hook]);
   }
 
   /**