2016年 12月 24日
>>> import time,os,psutil,sys
>>> pid = psutil.Process(os.getpid())
>>>
>>> b = set()
>>> sz0 = pid.memory_info().rss
>>> t0 = time.time()
>>> for i in range(1,10000001):
... b.add(i)
...
>>> time.time() - t0, pid.memory_info().rss-sz0
(2.310807466506958, 592703488)
2.3秒/1000万個=0.23マイクロ秒/個のペースで追加できている。
そして、メモリは592MB消費したようだ。
>>> b = set()
>>> sz0 = pid.memory_info().rss
>>> t0 = time.time()
>>> b = {i for i in range(1,10000001)}
>>> time.time() - t0, pid.memory_info().rss-sz0
(0.6817171573638916, 592707584)
0.60秒/1000万個=0.06マイクロ秒/個で、4倍近く高速になっている。
>>> sz0 = pid.memory_info().rss
>>> t0 = time.time()
>>> for i in range(10000000,0,-1):
... b.discard(i)
...
>>> time.time() - t0, pid.memory_info().rss-sz0
(2.336066484451294, -324263936)
>>> b
set()
消すのは、内包を使わないadd()とほぼ同じ時間かかることが分かった。