/Tools/pybench/Dict.py

http://unladen-swallow.googlecode.com/ · Python · 504 lines · 406 code · 98 blank · 0 comment · 10 complexity · f36a69a49d2e0fcb47d260059a0d39ea MD5 · raw file

  1. from pybench import Test
  2. class DictCreation(Test):
  3. version = 2.0
  4. operations = 5*(5 + 5)
  5. rounds = 80000
  6. def test(self):
  7. for i in xrange(self.rounds):
  8. d1 = {}
  9. d2 = {}
  10. d3 = {}
  11. d4 = {}
  12. d5 = {}
  13. d1 = {1:2,3:4,5:6}
  14. d2 = {2:3,4:5,6:7}
  15. d3 = {3:4,5:6,7:8}
  16. d4 = {4:5,6:7,8:9}
  17. d5 = {6:7,8:9,10:11}
  18. d1 = {}
  19. d2 = {}
  20. d3 = {}
  21. d4 = {}
  22. d5 = {}
  23. d1 = {1:2,3:4,5:6}
  24. d2 = {2:3,4:5,6:7}
  25. d3 = {3:4,5:6,7:8}
  26. d4 = {4:5,6:7,8:9}
  27. d5 = {6:7,8:9,10:11}
  28. d1 = {}
  29. d2 = {}
  30. d3 = {}
  31. d4 = {}
  32. d5 = {}
  33. d1 = {1:2,3:4,5:6}
  34. d2 = {2:3,4:5,6:7}
  35. d3 = {3:4,5:6,7:8}
  36. d4 = {4:5,6:7,8:9}
  37. d5 = {6:7,8:9,10:11}
  38. d1 = {}
  39. d2 = {}
  40. d3 = {}
  41. d4 = {}
  42. d5 = {}
  43. d1 = {1:2,3:4,5:6}
  44. d2 = {2:3,4:5,6:7}
  45. d3 = {3:4,5:6,7:8}
  46. d4 = {4:5,6:7,8:9}
  47. d5 = {6:7,8:9,10:11}
  48. d1 = {}
  49. d2 = {}
  50. d3 = {}
  51. d4 = {}
  52. d5 = {}
  53. d1 = {1:2,3:4,5:6}
  54. d2 = {2:3,4:5,6:7}
  55. d3 = {3:4,5:6,7:8}
  56. d4 = {4:5,6:7,8:9}
  57. d5 = {6:7,8:9,10:11}
  58. def calibrate(self):
  59. for i in xrange(self.rounds):
  60. pass
  61. class DictWithStringKeys(Test):
  62. version = 2.0
  63. operations = 5*(6 + 6)
  64. rounds = 200000
  65. def test(self):
  66. d = {}
  67. for i in xrange(self.rounds):
  68. d['abc'] = 1
  69. d['def'] = 2
  70. d['ghi'] = 3
  71. d['jkl'] = 4
  72. d['mno'] = 5
  73. d['pqr'] = 6
  74. d['abc']
  75. d['def']
  76. d['ghi']
  77. d['jkl']
  78. d['mno']
  79. d['pqr']
  80. d['abc'] = 1
  81. d['def'] = 2
  82. d['ghi'] = 3
  83. d['jkl'] = 4
  84. d['mno'] = 5
  85. d['pqr'] = 6
  86. d['abc']
  87. d['def']
  88. d['ghi']
  89. d['jkl']
  90. d['mno']
  91. d['pqr']
  92. d['abc'] = 1
  93. d['def'] = 2
  94. d['ghi'] = 3
  95. d['jkl'] = 4
  96. d['mno'] = 5
  97. d['pqr'] = 6
  98. d['abc']
  99. d['def']
  100. d['ghi']
  101. d['jkl']
  102. d['mno']
  103. d['pqr']
  104. d['abc'] = 1
  105. d['def'] = 2
  106. d['ghi'] = 3
  107. d['jkl'] = 4
  108. d['mno'] = 5
  109. d['pqr'] = 6
  110. d['abc']
  111. d['def']
  112. d['ghi']
  113. d['jkl']
  114. d['mno']
  115. d['pqr']
  116. d['abc'] = 1
  117. d['def'] = 2
  118. d['ghi'] = 3
  119. d['jkl'] = 4
  120. d['mno'] = 5
  121. d['pqr'] = 6
  122. d['abc']
  123. d['def']
  124. d['ghi']
  125. d['jkl']
  126. d['mno']
  127. d['pqr']
  128. def calibrate(self):
  129. d = {}
  130. for i in xrange(self.rounds):
  131. pass
  132. class DictWithFloatKeys(Test):
  133. version = 2.0
  134. operations = 5*(6 + 6)
  135. rounds = 150000
  136. def test(self):
  137. d = {}
  138. for i in xrange(self.rounds):
  139. d[1.234] = 1
  140. d[2.345] = 2
  141. d[3.456] = 3
  142. d[4.567] = 4
  143. d[5.678] = 5
  144. d[6.789] = 6
  145. d[1.234]
  146. d[2.345]
  147. d[3.456]
  148. d[4.567]
  149. d[5.678]
  150. d[6.789]
  151. d[1.234] = 1
  152. d[2.345] = 2
  153. d[3.456] = 3
  154. d[4.567] = 4
  155. d[5.678] = 5
  156. d[6.789] = 6
  157. d[1.234]
  158. d[2.345]
  159. d[3.456]
  160. d[4.567]
  161. d[5.678]
  162. d[6.789]
  163. d[1.234] = 1
  164. d[2.345] = 2
  165. d[3.456] = 3
  166. d[4.567] = 4
  167. d[5.678] = 5
  168. d[6.789] = 6
  169. d[1.234]
  170. d[2.345]
  171. d[3.456]
  172. d[4.567]
  173. d[5.678]
  174. d[6.789]
  175. d[1.234] = 1
  176. d[2.345] = 2
  177. d[3.456] = 3
  178. d[4.567] = 4
  179. d[5.678] = 5
  180. d[6.789] = 6
  181. d[1.234]
  182. d[2.345]
  183. d[3.456]
  184. d[4.567]
  185. d[5.678]
  186. d[6.789]
  187. d[1.234] = 1
  188. d[2.345] = 2
  189. d[3.456] = 3
  190. d[4.567] = 4
  191. d[5.678] = 5
  192. d[6.789] = 6
  193. d[1.234]
  194. d[2.345]
  195. d[3.456]
  196. d[4.567]
  197. d[5.678]
  198. d[6.789]
  199. def calibrate(self):
  200. d = {}
  201. for i in xrange(self.rounds):
  202. pass
  203. class DictWithIntegerKeys(Test):
  204. version = 2.0
  205. operations = 5*(6 + 6)
  206. rounds = 200000
  207. def test(self):
  208. d = {}
  209. for i in xrange(self.rounds):
  210. d[1] = 1
  211. d[2] = 2
  212. d[3] = 3
  213. d[4] = 4
  214. d[5] = 5
  215. d[6] = 6
  216. d[1]
  217. d[2]
  218. d[3]
  219. d[4]
  220. d[5]
  221. d[6]
  222. d[1] = 1
  223. d[2] = 2
  224. d[3] = 3
  225. d[4] = 4
  226. d[5] = 5
  227. d[6] = 6
  228. d[1]
  229. d[2]
  230. d[3]
  231. d[4]
  232. d[5]
  233. d[6]
  234. d[1] = 1
  235. d[2] = 2
  236. d[3] = 3
  237. d[4] = 4
  238. d[5] = 5
  239. d[6] = 6
  240. d[1]
  241. d[2]
  242. d[3]
  243. d[4]
  244. d[5]
  245. d[6]
  246. d[1] = 1
  247. d[2] = 2
  248. d[3] = 3
  249. d[4] = 4
  250. d[5] = 5
  251. d[6] = 6
  252. d[1]
  253. d[2]
  254. d[3]
  255. d[4]
  256. d[5]
  257. d[6]
  258. d[1] = 1
  259. d[2] = 2
  260. d[3] = 3
  261. d[4] = 4
  262. d[5] = 5
  263. d[6] = 6
  264. d[1]
  265. d[2]
  266. d[3]
  267. d[4]
  268. d[5]
  269. d[6]
  270. def calibrate(self):
  271. d = {}
  272. for i in xrange(self.rounds):
  273. pass
  274. class SimpleDictManipulation(Test):
  275. version = 2.0
  276. operations = 5*(6 + 6 + 6 + 6)
  277. rounds = 100000
  278. def test(self):
  279. d = {}
  280. has_key = d.has_key
  281. for i in xrange(self.rounds):
  282. d[0] = 3
  283. d[1] = 4
  284. d[2] = 5
  285. d[3] = 3
  286. d[4] = 4
  287. d[5] = 5
  288. x = d[0]
  289. x = d[1]
  290. x = d[2]
  291. x = d[3]
  292. x = d[4]
  293. x = d[5]
  294. has_key(0)
  295. has_key(2)
  296. has_key(4)
  297. has_key(6)
  298. has_key(8)
  299. has_key(10)
  300. del d[0]
  301. del d[1]
  302. del d[2]
  303. del d[3]
  304. del d[4]
  305. del d[5]
  306. d[0] = 3
  307. d[1] = 4
  308. d[2] = 5
  309. d[3] = 3
  310. d[4] = 4
  311. d[5] = 5
  312. x = d[0]
  313. x = d[1]
  314. x = d[2]
  315. x = d[3]
  316. x = d[4]
  317. x = d[5]
  318. has_key(0)
  319. has_key(2)
  320. has_key(4)
  321. has_key(6)
  322. has_key(8)
  323. has_key(10)
  324. del d[0]
  325. del d[1]
  326. del d[2]
  327. del d[3]
  328. del d[4]
  329. del d[5]
  330. d[0] = 3
  331. d[1] = 4
  332. d[2] = 5
  333. d[3] = 3
  334. d[4] = 4
  335. d[5] = 5
  336. x = d[0]
  337. x = d[1]
  338. x = d[2]
  339. x = d[3]
  340. x = d[4]
  341. x = d[5]
  342. has_key(0)
  343. has_key(2)
  344. has_key(4)
  345. has_key(6)
  346. has_key(8)
  347. has_key(10)
  348. del d[0]
  349. del d[1]
  350. del d[2]
  351. del d[3]
  352. del d[4]
  353. del d[5]
  354. d[0] = 3
  355. d[1] = 4
  356. d[2] = 5
  357. d[3] = 3
  358. d[4] = 4
  359. d[5] = 5
  360. x = d[0]
  361. x = d[1]
  362. x = d[2]
  363. x = d[3]
  364. x = d[4]
  365. x = d[5]
  366. has_key(0)
  367. has_key(2)
  368. has_key(4)
  369. has_key(6)
  370. has_key(8)
  371. has_key(10)
  372. del d[0]
  373. del d[1]
  374. del d[2]
  375. del d[3]
  376. del d[4]
  377. del d[5]
  378. d[0] = 3
  379. d[1] = 4
  380. d[2] = 5
  381. d[3] = 3
  382. d[4] = 4
  383. d[5] = 5
  384. x = d[0]
  385. x = d[1]
  386. x = d[2]
  387. x = d[3]
  388. x = d[4]
  389. x = d[5]
  390. has_key(0)
  391. has_key(2)
  392. has_key(4)
  393. has_key(6)
  394. has_key(8)
  395. has_key(10)
  396. del d[0]
  397. del d[1]
  398. del d[2]
  399. del d[3]
  400. del d[4]
  401. del d[5]
  402. def calibrate(self):
  403. d = {}
  404. has_key = d.has_key
  405. for i in xrange(self.rounds):
  406. pass