python-igraph pickling efficiency
Pickling is a generic format to store arbitrary objects, which may reference other objects, which may in turn also reference other objects. Therefore, when Python is pickling an object, it must keep track of all the objects that it has "seen" and serialized previously to avoid getting stuck in an infinite loop. That's probably the reason why pickling is slower (and uses more memory).
The advantage of using pickling is that the pickled representation will preserve the exact Python type of every single graph, vertex or edge attribute (provided that you use types that support pickling). GraphML won't keep the exact types because there is no unambiguous mapping from Python types to GraphML types; for instance, all numeric attributes would be converted to doubles in the GraphML representation, irrespectively of whether the original attributes were Python ints, longs, or floating-point numbers.
I am a beginner in igraph.
I have a graph data of 60000 nodes and 900K edges. I could successfully create the graph using python-igraph and write to disk. My machine has 3G memory. 
When I wrote the graph to disk in graphml format, the memory usage was around 19%; with write_pickle, the usage went up to 50% and took significantly more time. 
What is the reason behind this behavior of igraph? When should and when should I not use the pickle format? 
Please shed light into this.