データを追加して確認するときのリストと辞書型の速度比較

前回,データを検索する場合,リストをsetした場合と辞書型ではsetのほうが早かったけど,データの追加までを考えるとどうなのか気になったので調べた.

プログラム

#-*- coding:utf-8 -*-
import time

def test_a(list):
    for i in range(10000):
        list.append(str(i))
    if '1000' in set(list):
        print 'ok'

def test_b(hash):
    for i in range(10000):
        hash[str(i)] = 1
    if hash.has_key('1000'):
        print 'ok'

if __name__=='__main__':
    a = []
    b = {}

    f = time.clock()
    test_a(a)
    t = time.clock()
    print t-f
    f = time.clock()
    test_b(b)
    t = time.clock()
    print t-f

結果

  • 1回目
set 0.0241987105459
辞書型 0.0217475306727
  • 2回目
set 0.0243446228387
辞書型 0.0204658488246
  • 3回目
set 0.0243446228387
辞書型 0.0208331958532
  • 4回目
set 0.0242016434563
辞書型 0.0207848028314
  • 5回目
set 0.0236297259269
辞書型 0.0210824932378

感想

リストの追加はとても重い処理なので,予想通りかな。