From 80d21af614038a3163b1def661a5087735865395 Mon Sep 17 00:00:00 2001
From: Raymond Hettinger <python@rcn.com>
Date: Wed, 21 Aug 2002 04:12:03 +0000
Subject: Sped ._update() method by factoring try/except out of the inner loop.

---
 Lib/sets.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/Lib/sets.py b/Lib/sets.py
index 6245d53..bb44280 100644
--- a/Lib/sets.py
+++ b/Lib/sets.py
@@ -280,13 +280,14 @@ class BaseSet(object):
 
     def _update(self, iterable):
         # The main loop for update() and the subclass __init__() methods.
-        # XXX This can be optimized a bit by first trying the loop
-        # without setting up a try/except for each element.
         data = self._data
         value = True
-        for element in iterable:
+        it = iter(iterable)
+        while True:
             try:
-                data[element] = value
+                for element in it:
+                    data[element] = value
+                return
             except TypeError:
                 transform = getattr(element, "_as_immutable", None)
                 if transform is None:
-- 
cgit v0.12