1# frozendict 2 3Welcome, fellow programmer! 4 5`frozendict` is a simple immutable dictionary. Unlike other similar 6implementations, immutability is guaranteed: you can't change the internal 7variables of the class, and they are all immutable objects. Reinvoking 8`__init__` does not alter the object. 9 10The API is the same as `dict`, without methods that can change the immutability. 11So it supports also `fromkeys`, unlike other implementations. Furthermore it 12can be `pickle`d, un`pickle`d and have an hash, if all values are hashable. 13 14You can also add any `dict` to a `frozendict` using the `|` operator. The result is a new `frozendict`. 15 16Examples: 17 18```python 19from frozendict import frozendict 20 21fd = frozendict({"Sulla": "Marco", "Hicks": "Bill"}) 22 23print(fd) 24# frozendict({'Sulla': 'Marco', 'Hicks': 'Bill'}) 25 26print(fd["Sulla"]) 27# Marco 28 29fd["God"] 30# KeyError: 'God' 31 32len(fd) 33# 2 34 35"Sulla" in fd 36# True 37 38"Sulla" not in fd 39# False 40 41"God" in fd 42# False 43 44hash(fd) 45# 5833699487320513741 46 47fd_unhashable = frozendict({1: []}) 48hash(fd_unhashable) 49# TypeError: Not all values are hashable. 50 51fd | {1: 2} 52# frozendict({'Sulla': 'Marco', 'Hicks': 'Bill', 1: 2}) 53 54fd5 = frozendict(fd) 55id_fd5 = id(fd5) 56fd5 |= {1: 2} 57fd5 58# frozendict.frozendict({'Sulla': 'Marco', 'Hicks': 'Bill', 1: 2}) 59id(fd5) != id_fd5 60# True 61 62fd2 = fd.copy() 63fd2 == fd 64# True 65 66fd3 = frozendict(fd) 67fd3 == fd 68# True 69 70fd4 = frozendict({"Hicks": "Bill", "Sulla": "Marco"}) 71 72print(fd4) 73# frozendict({'Hicks': 'Bill', 'Sulla': 'Marco'}) 74 75fd4 == fd 76# True 77 78import pickle 79fd_unpickled = pickle.loads(pickle.dumps(fd)) 80print(fd_unpickled) 81# frozendict({'Sulla': 'Marco', 'Hicks': 'Bill'}) 82fd_unpickled == fd 83# True 84 85frozendict(Sulla="Marco", Hicks="Bill") 86# frozendict({'Sulla': 'Marco', 'Hicks': 'Bill'} 87 88frozendict((("Sulla", "Marco"), ("Hicks", "Bill"))) 89# frozendict({'Sulla': 'Marco', 'Hicks': 'Bill'}) 90 91fd.get("Sulla") 92# 'Marco' 93 94print(fd.get("God")) 95# None 96 97tuple(fd.keys()) 98# ('Sulla', 'Hicks') 99 100tuple(fd.values()) 101# ('Marco', 'Bill') 102 103tuple(fd.items()) 104# (('Sulla', 'Marco'), ('Hicks', 'Bill')) 105 106frozendict.fromkeys(["Marco", "Giulia"], "Sulla") 107# frozendict({'Marco': 'Sulla', 'Giulia': 'Sulla'}) 108 109iter(fd) 110# <dict_keyiterator object at 0x7feb75c49188> 111 112fd["Sulla"] = "Silla" 113# TypeError: 'frozendict' object doesn't support item assignment 114``` 115 116# Benchmarks 117 118Some benchmarks between `dict` and `coold`, a C-only extended and experimental version of frozendict[1]: 119 120``` 121################################################################################ 122//////////////////////////////////////////////////////////////////////////////// 123Name: `constructor(d)`; Size: 5; Keys: str; Type: dict; Time: 7.88e-08; Sigma: 5e-09 124Name: `constructor(d)`; Size: 5; Keys: str; Type: coold; Time: 2.99e-07; Sigma: 3e-09 125//////////////////////////////////////////////////////////////////////////////// 126Name: `constructor(d)`; Size: 5; Keys: int; Type: dict; Time: 8.16e-08; Sigma: 4e-09 127Name: `constructor(d)`; Size: 5; Keys: int; Type: coold; Time: 3.12e-07; Sigma: 2e-09 128//////////////////////////////////////////////////////////////////////////////// 129Name: `constructor(d)`; Size: 1000; Keys: str; Type: dict; Time: 5.90e-06; Sigma: 5e-07 130Name: `constructor(d)`; Size: 1000; Keys: str; Type: coold; Time: 5.22e-05; Sigma: 8e-07 131//////////////////////////////////////////////////////////////////////////////// 132Name: `constructor(d)`; Size: 1000; Keys: int; Type: dict; Time: 3.44e-06; Sigma: 2e-07 133Name: `constructor(d)`; Size: 1000; Keys: int; Type: coold; Time: 4.05e-05; Sigma: 1e-06 134################################################################################ 135//////////////////////////////////////////////////////////////////////////////// 136Name: `constructor(kwargs)`; Size: 5; Keys: str; Type: dict; Time: 2.38e-07; Sigma: 2e-09 137Name: `constructor(kwargs)`; Size: 5; Keys: str; Type: coold; Time: 2.25e-07; Sigma: 1e-09 138//////////////////////////////////////////////////////////////////////////////// 139Name: `constructor(kwargs)`; Size: 1000; Keys: str; Type: dict; Time: 4.67e-05; Sigma: 1e-06 140Name: `constructor(kwargs)`; Size: 1000; Keys: str; Type: coold; Time: 2.73e-05; Sigma: 6e-07 141################################################################################ 142//////////////////////////////////////////////////////////////////////////////// 143Name: `constructor(seq2)`; Size: 5; Keys: str; Type: dict; Time: 2.01e-07; Sigma: 2e-09 144Name: `constructor(seq2)`; Size: 5; Keys: str; Type: coold; Time: 2.44e-07; Sigma: 1e-09 145//////////////////////////////////////////////////////////////////////////////// 146Name: `constructor(seq2)`; Size: 5; Keys: int; Type: dict; Time: 2.18e-07; Sigma: 3e-09 147Name: `constructor(seq2)`; Size: 5; Keys: int; Type: coold; Time: 2.59e-07; Sigma: 5e-09 148//////////////////////////////////////////////////////////////////////////////// 149Name: `constructor(seq2)`; Size: 1000; Keys: str; Type: dict; Time: 4.22e-05; Sigma: 6e-07 150Name: `constructor(seq2)`; Size: 1000; Keys: str; Type: coold; Time: 4.20e-05; Sigma: 6e-07 151//////////////////////////////////////////////////////////////////////////////// 152Name: `constructor(seq2)`; Size: 1000; Keys: int; Type: dict; Time: 2.98e-05; Sigma: 3e-07 153Name: `constructor(seq2)`; Size: 1000; Keys: int; Type: coold; Time: 3.08e-05; Sigma: 5e-07 154################################################################################ 155//////////////////////////////////////////////////////////////////////////////// 156Name: `constructor(o)`; Size: 5; Keys: str; Type: dict; Time: 7.88e-08; Sigma: 5e-09 157Name: `constructor(o)`; Size: 5; Keys: str; Type: coold; Time: 2.58e-08; Sigma: 2e-09 158//////////////////////////////////////////////////////////////////////////////// 159Name: `constructor(o)`; Size: 5; Keys: int; Type: dict; Time: 8.35e-08; Sigma: 3e-09 160Name: `constructor(o)`; Size: 5; Keys: int; Type: coold; Time: 2.58e-08; Sigma: 2e-09 161//////////////////////////////////////////////////////////////////////////////// 162Name: `constructor(o)`; Size: 1000; Keys: str; Type: dict; Time: 6.09e-06; Sigma: 2e-07 163Name: `constructor(o)`; Size: 1000; Keys: str; Type: coold; Time: 2.58e-08; Sigma: 2e-09 164//////////////////////////////////////////////////////////////////////////////// 165Name: `constructor(o)`; Size: 1000; Keys: int; Type: dict; Time: 3.48e-06; Sigma: 2e-07 166Name: `constructor(o)`; Size: 1000; Keys: int; Type: coold; Time: 2.58e-08; Sigma: 2e-09 167################################################################################ 168//////////////////////////////////////////////////////////////////////////////// 169Name: `o.copy()`; Size: 5; Keys: str; Type: dict; Time: 7.08e-08; Sigma: 4e-09 170Name: `o.copy()`; Size: 5; Keys: str; Type: coold; Time: 3.35e-08; Sigma: 2e-09 171//////////////////////////////////////////////////////////////////////////////// 172Name: `o.copy()`; Size: 5; Keys: int; Type: dict; Time: 7.18e-08; Sigma: 5e-09 173Name: `o.copy()`; Size: 5; Keys: int; Type: coold; Time: 3.35e-08; Sigma: 2e-09 174//////////////////////////////////////////////////////////////////////////////// 175Name: `o.copy()`; Size: 1000; Keys: str; Type: dict; Time: 6.10e-06; Sigma: 2e-07 176Name: `o.copy()`; Size: 1000; Keys: str; Type: coold; Time: 3.35e-08; Sigma: 2e-09 177//////////////////////////////////////////////////////////////////////////////// 178Name: `o.copy()`; Size: 1000; Keys: int; Type: dict; Time: 3.46e-06; Sigma: 2e-07 179Name: `o.copy()`; Size: 1000; Keys: int; Type: coold; Time: 3.35e-08; Sigma: 2e-09 180################################################################################ 181//////////////////////////////////////////////////////////////////////////////// 182Name: `o == o`; Size: 5; Keys: str; Type: dict; Time: 7.21e-08; Sigma: 3e-10 183Name: `o == o`; Size: 5; Keys: str; Type: coold; Time: 2.78e-08; Sigma: 1e-09 184//////////////////////////////////////////////////////////////////////////////// 185Name: `o == o`; Size: 5; Keys: int; Type: dict; Time: 7.27e-08; Sigma: 1e-09 186Name: `o == o`; Size: 5; Keys: int; Type: coold; Time: 2.78e-08; Sigma: 1e-09 187//////////////////////////////////////////////////////////////////////////////// 188Name: `o == o`; Size: 1000; Keys: str; Type: dict; Time: 1.36e-05; Sigma: 2e-07 189Name: `o == o`; Size: 1000; Keys: str; Type: coold; Time: 2.78e-08; Sigma: 1e-09 190//////////////////////////////////////////////////////////////////////////////// 191Name: `o == o`; Size: 1000; Keys: int; Type: dict; Time: 1.00e-05; Sigma: 7e-08 192Name: `o == o`; Size: 1000; Keys: int; Type: coold; Time: 2.78e-08; Sigma: 9e-10 193################################################################################ 194//////////////////////////////////////////////////////////////////////////////// 195Name: `for x in o`; Size: 5; Keys: str; Type: dict; Time: 7.91e-08; Sigma: 1e-09 196Name: `for x in o`; Size: 5; Keys: str; Type: coold; Time: 7.08e-08; Sigma: 2e-09 197//////////////////////////////////////////////////////////////////////////////// 198Name: `for x in o`; Size: 5; Keys: int; Type: dict; Time: 7.91e-08; Sigma: 1e-09 199Name: `for x in o`; Size: 5; Keys: int; Type: coold; Time: 7.08e-08; Sigma: 2e-09 200//////////////////////////////////////////////////////////////////////////////// 201Name: `for x in o`; Size: 1000; Keys: str; Type: dict; Time: 9.82e-06; Sigma: 4e-08 202Name: `for x in o`; Size: 1000; Keys: str; Type: coold; Time: 8.10e-06; Sigma: 3e-08 203//////////////////////////////////////////////////////////////////////////////// 204Name: `for x in o`; Size: 1000; Keys: int; Type: dict; Time: 9.79e-06; Sigma: 3e-08 205Name: `for x in o`; Size: 1000; Keys: int; Type: coold; Time: 8.07e-06; Sigma: 3e-08 206################################################################################ 207//////////////////////////////////////////////////////////////////////////////// 208Name: `for x in o.values()`; Size: 5; Keys: str; Type: dict; Time: 8.22e-08; Sigma: 1e-09 209Name: `for x in o.values()`; Size: 5; Keys: str; Type: coold; Time: 6.83e-08; Sigma: 1e-09 210//////////////////////////////////////////////////////////////////////////////// 211Name: `for x in o.values()`; Size: 5; Keys: int; Type: dict; Time: 8.24e-08; Sigma: 1e-09 212Name: `for x in o.values()`; Size: 5; Keys: int; Type: coold; Time: 6.83e-08; Sigma: 1e-09 213//////////////////////////////////////////////////////////////////////////////// 214Name: `for x in o.values()`; Size: 1000; Keys: str; Type: dict; Time: 1.07e-05; Sigma: 4e-08 215Name: `for x in o.values()`; Size: 1000; Keys: str; Type: coold; Time: 8.13e-06; Sigma: 3e-08 216//////////////////////////////////////////////////////////////////////////////// 217Name: `for x in o.values()`; Size: 1000; Keys: int; Type: dict; Time: 1.07e-05; Sigma: 3e-08 218Name: `for x in o.values()`; Size: 1000; Keys: int; Type: coold; Time: 8.07e-06; Sigma: 2e-08 219################################################################################ 220//////////////////////////////////////////////////////////////////////////////// 221Name: `for x in o.items()`; Size: 5; Keys: str; Type: dict; Time: 1.19e-07; Sigma: 3e-09 222Name: `for x in o.items()`; Size: 5; Keys: str; Type: coold; Time: 1.20e-07; Sigma: 3e-09 223//////////////////////////////////////////////////////////////////////////////// 224Name: `for x in o.items()`; Size: 5; Keys: int; Type: dict; Time: 1.21e-07; Sigma: 3e-09 225Name: `for x in o.items()`; Size: 5; Keys: int; Type: coold; Time: 1.21e-07; Sigma: 2e-09 226//////////////////////////////////////////////////////////////////////////////// 227Name: `for x in o.items()`; Size: 1000; Keys: str; Type: dict; Time: 1.64e-05; Sigma: 4e-07 228Name: `for x in o.items()`; Size: 1000; Keys: str; Type: coold; Time: 1.64e-05; Sigma: 2e-07 229//////////////////////////////////////////////////////////////////////////////// 230Name: `for x in o.items()`; Size: 1000; Keys: int; Type: dict; Time: 1.65e-05; Sigma: 4e-07 231Name: `for x in o.items()`; Size: 1000; Keys: int; Type: coold; Time: 1.65e-05; Sigma: 4e-07 232################################################################################ 233//////////////////////////////////////////////////////////////////////////////// 234Name: `pickle.dumps(o)`; Size: 5; Keys: str; Type: dict; Time: 6.50e-07; Sigma: 3e-08 235Name: `pickle.dumps(o)`; Size: 5; Keys: str; Type: coold; Time: 2.76e-06; Sigma: 7e-08 236//////////////////////////////////////////////////////////////////////////////// 237Name: `pickle.dumps(o)`; Size: 5; Keys: int; Type: dict; Time: 4.59e-07; Sigma: 3e-08 238Name: `pickle.dumps(o)`; Size: 5; Keys: int; Type: coold; Time: 2.56e-06; Sigma: 1e-07 239//////////////////////////////////////////////////////////////////////////////// 240Name: `pickle.dumps(o)`; Size: 1000; Keys: str; Type: dict; Time: 1.26e-04; Sigma: 2e-06 241Name: `pickle.dumps(o)`; Size: 1000; Keys: str; Type: coold; Time: 1.93e-04; Sigma: 3e-06 242//////////////////////////////////////////////////////////////////////////////// 243Name: `pickle.dumps(o)`; Size: 1000; Keys: int; Type: dict; Time: 2.88e-05; Sigma: 5e-07 244Name: `pickle.dumps(o)`; Size: 1000; Keys: int; Type: coold; Time: 7.31e-05; Sigma: 1e-06 245################################################################################ 246//////////////////////////////////////////////////////////////////////////////// 247Name: `pickle.loads(dump)`; Size: 5; Keys: str; Type: dict; Time: 8.95e-07; Sigma: 2e-08 248Name: `pickle.loads(dump)`; Size: 5; Keys: str; Type: coold; Time: 2.07e-06; Sigma: 5e-08 249//////////////////////////////////////////////////////////////////////////////// 250Name: `pickle.loads(dump)`; Size: 5; Keys: int; Type: dict; Time: 4.46e-07; Sigma: 1e-08 251Name: `pickle.loads(dump)`; Size: 5; Keys: int; Type: coold; Time: 1.62e-06; Sigma: 7e-08 252//////////////////////////////////////////////////////////////////////////////// 253Name: `pickle.loads(dump)`; Size: 1000; Keys: str; Type: dict; Time: 1.56e-04; Sigma: 7e-06 254Name: `pickle.loads(dump)`; Size: 1000; Keys: str; Type: coold; Time: 2.21e-04; Sigma: 7e-06 255//////////////////////////////////////////////////////////////////////////////// 256Name: `pickle.loads(dump)`; Size: 1000; Keys: int; Type: dict; Time: 5.61e-05; Sigma: 1e-06 257Name: `pickle.loads(dump)`; Size: 1000; Keys: int; Type: coold; Time: 1.00e-04; Sigma: 3e-06 258################################################################################ 259//////////////////////////////////////////////////////////////////////////////// 260Name: `class.fromkeys()`; Size: 5; Keys: str; Type: dict; Time: 1.84e-07; Sigma: 6e-09 261Name: `class.fromkeys()`; Size: 5; Keys: str; Type: coold; Time: 2.15e-07; Sigma: 9e-09 262//////////////////////////////////////////////////////////////////////////////// 263Name: `class.fromkeys()`; Size: 5; Keys: int; Type: dict; Time: 2.10e-07; Sigma: 6e-09 264Name: `class.fromkeys()`; Size: 5; Keys: int; Type: coold; Time: 2.31e-07; Sigma: 6e-09 265//////////////////////////////////////////////////////////////////////////////// 266Name: `class.fromkeys()`; Size: 1000; Keys: str; Type: dict; Time: 3.99e-05; Sigma: 7e-07 267Name: `class.fromkeys()`; Size: 1000; Keys: str; Type: coold; Time: 3.83e-05; Sigma: 5e-07 268//////////////////////////////////////////////////////////////////////////////// 269Name: `class.fromkeys()`; Size: 1000; Keys: int; Type: dict; Time: 2.96e-05; Sigma: 5e-07 270Name: `class.fromkeys()`; Size: 1000; Keys: int; Type: coold; Time: 2.90e-05; Sigma: 4e-07 271################################################################################ 272//////////////////////////////////////////////////////////////////////////////// 273Name: `for x in o.keys()`; Size: 5; Keys: str; Type: dict; Time: 7.65e-08; Sigma: 1e-09 274Name: `for x in o.keys()`; Size: 5; Keys: str; Type: coold; Time: 6.91e-08; Sigma: 2e-09 275//////////////////////////////////////////////////////////////////////////////// 276Name: `for x in o.keys()`; Size: 5; Keys: int; Type: dict; Time: 7.65e-08; Sigma: 1e-09 277Name: `for x in o.keys()`; Size: 5; Keys: int; Type: coold; Time: 6.86e-08; Sigma: 3e-09 278//////////////////////////////////////////////////////////////////////////////// 279Name: `for x in o.keys()`; Size: 1000; Keys: str; Type: dict; Time: 9.81e-06; Sigma: 3e-08 280Name: `for x in o.keys()`; Size: 1000; Keys: str; Type: coold; Time: 8.09e-06; Sigma: 3e-08 281//////////////////////////////////////////////////////////////////////////////// 282Name: `for x in o.keys()`; Size: 1000; Keys: int; Type: dict; Time: 9.81e-06; Sigma: 3e-08 283Name: `for x in o.keys()`; Size: 1000; Keys: int; Type: coold; Time: 8.07e-06; Sigma: 2e-08 284################################################################################ 285//////////////////////////////////////////////////////////////////////////////// 286Name: `for x in iter(o)`; Size: 5; Keys: str; Type: dict; Time: 1.00e-07; Sigma: 3e-09 287Name: `for x in iter(o)`; Size: 5; Keys: str; Type: coold; Time: 9.19e-08; Sigma: 3e-09 288//////////////////////////////////////////////////////////////////////////////// 289Name: `for x in iter(o)`; Size: 5; Keys: int; Type: dict; Time: 1.00e-07; Sigma: 3e-09 290Name: `for x in iter(o)`; Size: 5; Keys: int; Type: coold; Time: 9.20e-08; Sigma: 3e-09 291//////////////////////////////////////////////////////////////////////////////// 292Name: `for x in iter(o)`; Size: 1000; Keys: str; Type: dict; Time: 9.85e-06; Sigma: 3e-08 293Name: `for x in iter(o)`; Size: 1000; Keys: str; Type: coold; Time: 8.13e-06; Sigma: 4e-08 294//////////////////////////////////////////////////////////////////////////////// 295Name: `for x in iter(o)`; Size: 1000; Keys: int; Type: dict; Time: 9.82e-06; Sigma: 4e-08 296Name: `for x in iter(o)`; Size: 1000; Keys: int; Type: coold; Time: 8.10e-06; Sigma: 3e-08 297################################################################################ 298//////////////////////////////////////////////////////////////////////////////// 299Name: `o == d`; Size: 5; Keys: str; Type: dict; Time: 7.45e-08; Sigma: 6e-10 300Name: `o == d`; Size: 5; Keys: str; Type: coold; Time: 7.96e-08; Sigma: 1e-09 301//////////////////////////////////////////////////////////////////////////////// 302Name: `o == d`; Size: 5; Keys: int; Type: dict; Time: 7.30e-08; Sigma: 8e-10 303Name: `o == d`; Size: 5; Keys: int; Type: coold; Time: 8.90e-08; Sigma: 2e-09 304//////////////////////////////////////////////////////////////////////////////// 305Name: `o == d`; Size: 1000; Keys: str; Type: dict; Time: 1.37e-05; Sigma: 2e-07 306Name: `o == d`; Size: 1000; Keys: str; Type: coold; Time: 1.58e-05; Sigma: 2e-07 307//////////////////////////////////////////////////////////////////////////////// 308Name: `o == d`; Size: 1000; Keys: int; Type: dict; Time: 1.01e-05; Sigma: 7e-08 309Name: `o == d`; Size: 1000; Keys: int; Type: coold; Time: 1.20e-05; Sigma: 1e-07 310################################################################################ 311//////////////////////////////////////////////////////////////////////////////// 312Name: `o.get(key)`; Size: 5; Keys: str; Type: dict; Time: 2.95e-08; Sigma: 5e-09 313Name: `o.get(key)`; Size: 5; Keys: str; Type: coold; Time: 2.98e-08; Sigma: 4e-09 314//////////////////////////////////////////////////////////////////////////////// 315Name: `o.get(key)`; Size: 5; Keys: int; Type: dict; Time: 2.89e-08; Sigma: 4e-09 316Name: `o.get(key)`; Size: 5; Keys: int; Type: coold; Time: 2.90e-08; Sigma: 5e-09 317//////////////////////////////////////////////////////////////////////////////// 318Name: `o.get(key)`; Size: 1000; Keys: str; Type: dict; Time: 3.09e-08; Sigma: 3e-09 319Name: `o.get(key)`; Size: 1000; Keys: str; Type: coold; Time: 3.04e-08; Sigma: 3e-09 320//////////////////////////////////////////////////////////////////////////////// 321Name: `o.get(key)`; Size: 1000; Keys: int; Type: dict; Time: 2.98e-08; Sigma: 4e-09 322Name: `o.get(key)`; Size: 1000; Keys: int; Type: coold; Time: 2.95e-08; Sigma: 4e-09 323################################################################################ 324//////////////////////////////////////////////////////////////////////////////// 325Name: `o[key]`; Size: 5; Keys: str; Type: dict; Time: 2.81e-08; Sigma: 6e-10 326Name: `o[key]`; Size: 5; Keys: str; Type: coold; Time: 2.81e-08; Sigma: 7e-10 327//////////////////////////////////////////////////////////////////////////////// 328Name: `o[key]`; Size: 5; Keys: int; Type: dict; Time: 2.97e-08; Sigma: 6e-10 329Name: `o[key]`; Size: 5; Keys: int; Type: coold; Time: 3.03e-08; Sigma: 1e-09 330//////////////////////////////////////////////////////////////////////////////// 331Name: `o[key]`; Size: 1000; Keys: str; Type: dict; Time: 2.84e-08; Sigma: 6e-10 332Name: `o[key]`; Size: 1000; Keys: str; Type: coold; Time: 2.75e-08; Sigma: 1e-09 333//////////////////////////////////////////////////////////////////////////////// 334Name: `o[key]`; Size: 1000; Keys: int; Type: dict; Time: 3.05e-08; Sigma: 8e-10 335Name: `o[key]`; Size: 1000; Keys: int; Type: coold; Time: 3.07e-08; Sigma: 1e-09 336################################################################################ 337//////////////////////////////////////////////////////////////////////////////// 338Name: `key in o`; Size: 5; Keys: str; Type: dict; Time: 2.29e-08; Sigma: 4e-09 339Name: `key in o`; Size: 5; Keys: str; Type: coold; Time: 2.32e-08; Sigma: 4e-09 340//////////////////////////////////////////////////////////////////////////////// 341Name: `key in o`; Size: 5; Keys: int; Type: dict; Time: 2.26e-08; Sigma: 5e-09 342Name: `key in o`; Size: 5; Keys: int; Type: coold; Time: 2.22e-08; Sigma: 5e-09 343//////////////////////////////////////////////////////////////////////////////// 344Name: `key in o`; Size: 1000; Keys: str; Type: dict; Time: 2.44e-08; Sigma: 3e-09 345Name: `key in o`; Size: 1000; Keys: str; Type: coold; Time: 2.35e-08; Sigma: 3e-09 346//////////////////////////////////////////////////////////////////////////////// 347Name: `key in o`; Size: 1000; Keys: int; Type: dict; Time: 2.38e-08; Sigma: 3e-09 348Name: `key in o`; Size: 1000; Keys: int; Type: coold; Time: 2.33e-08; Sigma: 3e-09 349################################################################################ 350//////////////////////////////////////////////////////////////////////////////// 351Name: `key not in o`; Size: 5; Keys: str; Type: dict; Time: 2.29e-08; Sigma: 4e-09 352Name: `key not in o`; Size: 5; Keys: str; Type: coold; Time: 2.32e-08; Sigma: 4e-09 353//////////////////////////////////////////////////////////////////////////////// 354Name: `key not in o`; Size: 5; Keys: int; Type: dict; Time: 2.26e-08; Sigma: 5e-09 355Name: `key not in o`; Size: 5; Keys: int; Type: coold; Time: 2.23e-08; Sigma: 5e-09 356//////////////////////////////////////////////////////////////////////////////// 357Name: `key not in o`; Size: 1000; Keys: str; Type: dict; Time: 2.44e-08; Sigma: 3e-09 358Name: `key not in o`; Size: 1000; Keys: str; Type: coold; Time: 2.38e-08; Sigma: 3e-09 359//////////////////////////////////////////////////////////////////////////////// 360Name: `key not in o`; Size: 1000; Keys: int; Type: dict; Time: 2.38e-08; Sigma: 3e-09 361Name: `key not in o`; Size: 1000; Keys: int; Type: coold; Time: 2.35e-08; Sigma: 3e-09 362################################################################################ 363//////////////////////////////////////////////////////////////////////////////// 364Name: `hash(o)`; Size: 5; Keys: str; Type: coold; Time: 4.17e-08; Sigma: 1e-09 365//////////////////////////////////////////////////////////////////////////////// 366Name: `hash(o)`; Size: 5; Keys: int; Type: coold; Time: 4.19e-08; Sigma: 1e-09 367//////////////////////////////////////////////////////////////////////////////// 368Name: `hash(o)`; Size: 1000; Keys: str; Type: coold; Time: 4.15e-08; Sigma: 1e-09 369//////////////////////////////////////////////////////////////////////////////// 370Name: `hash(o)`; Size: 1000; Keys: int; Type: coold; Time: 4.15e-08; Sigma: 2e-09 371################################################################################ 372//////////////////////////////////////////////////////////////////////////////// 373Name: `len(o)`; Size: 5; Keys: str; Type: dict; Time: 3.21e-08; Sigma: 2e-09 374Name: `len(o)`; Size: 5; Keys: str; Type: coold; Time: 3.21e-08; Sigma: 2e-09 375//////////////////////////////////////////////////////////////////////////////// 376Name: `len(o)`; Size: 5; Keys: int; Type: dict; Time: 3.21e-08; Sigma: 2e-09 377Name: `len(o)`; Size: 5; Keys: int; Type: coold; Time: 3.21e-08; Sigma: 2e-09 378//////////////////////////////////////////////////////////////////////////////// 379Name: `len(o)`; Size: 1000; Keys: str; Type: dict; Time: 3.95e-08; Sigma: 2e-09 380Name: `len(o)`; Size: 1000; Keys: str; Type: coold; Time: 3.95e-08; Sigma: 2e-09 381//////////////////////////////////////////////////////////////////////////////// 382Name: `len(o)`; Size: 1000; Keys: int; Type: dict; Time: 3.95e-08; Sigma: 2e-09 383Name: `len(o)`; Size: 1000; Keys: int; Type: coold; Time: 3.95e-08; Sigma: 2e-09 384################################################################################ 385//////////////////////////////////////////////////////////////////////////////// 386Name: `o.keys()`; Size: 5; Keys: str; Type: dict; Time: 3.27e-08; Sigma: 2e-09 387Name: `o.keys()`; Size: 5; Keys: str; Type: coold; Time: 3.44e-08; Sigma: 2e-09 388//////////////////////////////////////////////////////////////////////////////// 389Name: `o.keys()`; Size: 5; Keys: int; Type: dict; Time: 3.27e-08; Sigma: 2e-09 390Name: `o.keys()`; Size: 5; Keys: int; Type: coold; Time: 3.41e-08; Sigma: 2e-09 391//////////////////////////////////////////////////////////////////////////////// 392Name: `o.keys()`; Size: 1000; Keys: str; Type: dict; Time: 3.26e-08; Sigma: 2e-09 393Name: `o.keys()`; Size: 1000; Keys: str; Type: coold; Time: 3.45e-08; Sigma: 2e-09 394//////////////////////////////////////////////////////////////////////////////// 395Name: `o.keys()`; Size: 1000; Keys: int; Type: dict; Time: 3.27e-08; Sigma: 2e-09 396Name: `o.keys()`; Size: 1000; Keys: int; Type: coold; Time: 3.41e-08; Sigma: 2e-09 397################################################################################ 398//////////////////////////////////////////////////////////////////////////////// 399Name: `o.values()`; Size: 5; Keys: str; Type: dict; Time: 3.23e-08; Sigma: 2e-09 400Name: `o.values()`; Size: 5; Keys: str; Type: coold; Time: 3.44e-08; Sigma: 2e-09 401//////////////////////////////////////////////////////////////////////////////// 402Name: `o.values()`; Size: 5; Keys: int; Type: dict; Time: 3.23e-08; Sigma: 2e-09 403Name: `o.values()`; Size: 5; Keys: int; Type: coold; Time: 3.44e-08; Sigma: 2e-09 404//////////////////////////////////////////////////////////////////////////////// 405Name: `o.values()`; Size: 1000; Keys: str; Type: dict; Time: 3.24e-08; Sigma: 2e-09 406Name: `o.values()`; Size: 1000; Keys: str; Type: coold; Time: 3.44e-08; Sigma: 2e-09 407//////////////////////////////////////////////////////////////////////////////// 408Name: `o.values()`; Size: 1000; Keys: int; Type: dict; Time: 3.23e-08; Sigma: 2e-09 409Name: `o.values()`; Size: 1000; Keys: int; Type: coold; Time: 3.44e-08; Sigma: 2e-09 410################################################################################ 411//////////////////////////////////////////////////////////////////////////////// 412Name: `o.items()`; Size: 5; Keys: str; Type: dict; Time: 3.22e-08; Sigma: 2e-09 413Name: `o.items()`; Size: 5; Keys: str; Type: coold; Time: 3.50e-08; Sigma: 2e-09 414//////////////////////////////////////////////////////////////////////////////// 415Name: `o.items()`; Size: 5; Keys: int; Type: dict; Time: 3.18e-08; Sigma: 3e-09 416Name: `o.items()`; Size: 5; Keys: int; Type: coold; Time: 3.50e-08; Sigma: 2e-09 417//////////////////////////////////////////////////////////////////////////////// 418Name: `o.items()`; Size: 1000; Keys: str; Type: dict; Time: 3.24e-08; Sigma: 2e-09 419Name: `o.items()`; Size: 1000; Keys: str; Type: coold; Time: 3.48e-08; Sigma: 2e-09 420//////////////////////////////////////////////////////////////////////////////// 421Name: `o.items()`; Size: 1000; Keys: int; Type: dict; Time: 3.24e-08; Sigma: 2e-09 422Name: `o.items()`; Size: 1000; Keys: int; Type: coold; Time: 3.50e-08; Sigma: 2e-09 423################################################################################ 424//////////////////////////////////////////////////////////////////////////////// 425Name: `iter(o)`; Size: 5; Keys: str; Type: dict; Time: 4.44e-08; Sigma: 2e-09 426Name: `iter(o)`; Size: 5; Keys: str; Type: coold; Time: 4.69e-08; Sigma: 1e-09 427//////////////////////////////////////////////////////////////////////////////// 428Name: `iter(o)`; Size: 5; Keys: int; Type: dict; Time: 4.44e-08; Sigma: 2e-09 429Name: `iter(o)`; Size: 5; Keys: int; Type: coold; Time: 4.67e-08; Sigma: 2e-09 430//////////////////////////////////////////////////////////////////////////////// 431Name: `iter(o)`; Size: 1000; Keys: str; Type: dict; Time: 4.44e-08; Sigma: 2e-09 432Name: `iter(o)`; Size: 1000; Keys: str; Type: coold; Time: 4.70e-08; Sigma: 1e-09 433//////////////////////////////////////////////////////////////////////////////// 434Name: `iter(o)`; Size: 1000; Keys: int; Type: dict; Time: 4.44e-08; Sigma: 2e-09 435Name: `iter(o)`; Size: 1000; Keys: int; Type: coold; Time: 4.70e-08; Sigma: 1e-09 436################################################################################ 437//////////////////////////////////////////////////////////////////////////////// 438Name: `repr(o)`; Size: 5; Keys: str; Type: dict; Time: 1.83e-06; Sigma: 4e-08 439Name: `repr(o)`; Size: 5; Keys: str; Type: coold; Time: 2.14e-06; Sigma: 8e-08 440//////////////////////////////////////////////////////////////////////////////// 441Name: `repr(o)`; Size: 5; Keys: int; Type: dict; Time: 7.60e-07; Sigma: 7e-09 442Name: `repr(o)`; Size: 5; Keys: int; Type: coold; Time: 9.24e-07; Sigma: 1e-08 443//////////////////////////////////////////////////////////////////////////////// 444Name: `repr(o)`; Size: 1000; Keys: str; Type: dict; Time: 2.71e-04; Sigma: 5e-06 445Name: `repr(o)`; Size: 1000; Keys: str; Type: coold; Time: 2.90e-04; Sigma: 2e-05 446//////////////////////////////////////////////////////////////////////////////// 447Name: `repr(o)`; Size: 1000; Keys: int; Type: dict; Time: 1.22e-04; Sigma: 1e-06 448Name: `repr(o)`; Size: 1000; Keys: int; Type: coold; Time: 1.23e-04; Sigma: 5e-06 449################################################################################ 450//////////////////////////////////////////////////////////////////////////////// 451Name: `str(o)`; Size: 5; Keys: str; Type: dict; Time: 1.86e-06; Sigma: 5e-08 452Name: `str(o)`; Size: 5; Keys: str; Type: coold; Time: 2.17e-06; Sigma: 7e-08 453//////////////////////////////////////////////////////////////////////////////// 454Name: `str(o)`; Size: 5; Keys: int; Type: dict; Time: 7.93e-07; Sigma: 5e-09 455Name: `str(o)`; Size: 5; Keys: int; Type: coold; Time: 9.51e-07; Sigma: 2e-08 456//////////////////////////////////////////////////////////////////////////////// 457Name: `str(o)`; Size: 1000; Keys: str; Type: dict; Time: 2.73e-04; Sigma: 5e-06 458Name: `str(o)`; Size: 1000; Keys: str; Type: coold; Time: 2.88e-04; Sigma: 3e-05 459//////////////////////////////////////////////////////////////////////////////// 460Name: `str(o)`; Size: 1000; Keys: int; Type: dict; Time: 1.22e-04; Sigma: 1e-06 461Name: `str(o)`; Size: 1000; Keys: int; Type: coold; Time: 1.23e-04; Sigma: 5e-06 462################################################################################ 463//////////////////////////////////////////////////////////////////////////////// 464Name: `set`; Size: 5; Keys: str; Type: dict; Time: 3.50e-08; Sigma: 2e-09 465Name: `set`; Size: 5; Keys: str; Type: coold; Time: 1.26e-07; Sigma: 8e-10 466//////////////////////////////////////////////////////////////////////////////// 467Name: `set`; Size: 5; Keys: int; Type: dict; Time: 3.61e-08; Sigma: 2e-09 468Name: `set`; Size: 5; Keys: int; Type: coold; Time: 1.28e-07; Sigma: 8e-10 469//////////////////////////////////////////////////////////////////////////////// 470Name: `set`; Size: 1000; Keys: str; Type: dict; Time: 3.53e-08; Sigma: 2e-09 471Name: `set`; Size: 1000; Keys: str; Type: coold; Time: 6.20e-06; Sigma: 5e-07 472//////////////////////////////////////////////////////////////////////////////// 473Name: `set`; Size: 1000; Keys: int; Type: dict; Time: 3.70e-08; Sigma: 2e-09 474Name: `set`; Size: 1000; Keys: int; Type: coold; Time: 3.61e-06; Sigma: 2e-07 475################################################################################ 476``` 477 478[1] Benchmarks done under Linux 64 bit, Python 3.10, using the C Extension. 479