Make pickling of OrderedDict instances more efficient.
diff --git a/Lib/collections.py b/Lib/collections.py
index 1e807af..202b8b2 100644
--- a/Lib/collections.py
+++ b/Lib/collections.py
@@ -99,14 +99,16 @@
 
     def __reduce__(self):
         'Return state information for pickling'
-        items = [[k, self[k]] for k in self]
+        dictitems = self.iteritems()
         tmp = self.__map, self.__root
         del self.__map, self.__root
         inst_dict = vars(self).copy()
         self.__map, self.__root = tmp
-        if inst_dict:
-            return (self.__class__, (items,), inst_dict)
-        return self.__class__, (items,)
+        # Set the state item to None when the dictionary is empty. This saves
+        # about 2 opcodes when the object is pickled.
+        if not inst_dict:
+            inst_dict = None
+        return (self.__class__, (), inst_dict, None, dictitems)
 
     setdefault = MutableMapping.setdefault
     update = MutableMapping.update