/tests/benchmarks/pybench/Constructs.py

https://bitbucket.org/pombredanne/nuitka · Python · 583 lines · 512 code · 52 blank · 19 comment · 244 complexity · 979d52f937579a76f95dad4b2d8e1d04 MD5 · raw file

  1. # Copyright 2013, Kay Hayen, mailto:kay.hayen@gmail.com
  2. #
  3. # Python test originally created or extracted from other peoples work. The
  4. # parts from me are licensed as below. It is at least Free Softwar where
  5. # it's copied from other people. In these cases, that will normally be
  6. # indicated.
  7. #
  8. # Licensed under the Apache License, Version 2.0 (the "License");
  9. # you may not use this file except in compliance with the License.
  10. # You may obtain a copy of the License at
  11. #
  12. # http://www.apache.org/licenses/LICENSE-2.0
  13. #
  14. # Unless required by applicable law or agreed to in writing, software
  15. # distributed under the License is distributed on an "AS IS" BASIS,
  16. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17. # See the License for the specific language governing permissions and
  18. # limitations under the License.
  19. #
  20. from pybench import Test
  21. class IfThenElse(Test):
  22. version = 2.0
  23. operations = 30*3 # hard to say...
  24. rounds = 150000
  25. def test(self):
  26. a,b,c = 1,2,3
  27. for i in xrange(self.rounds):
  28. if a == 1:
  29. if b == 2:
  30. if c != 3:
  31. c = 3
  32. b = 3
  33. else:
  34. c = 2
  35. elif b == 3:
  36. b = 2
  37. a = 2
  38. elif a == 2:
  39. a = 3
  40. else:
  41. a = 1
  42. if a == 1:
  43. if b == 2:
  44. if c != 3:
  45. c = 3
  46. b = 3
  47. else:
  48. c = 2
  49. elif b == 3:
  50. b = 2
  51. a = 2
  52. elif a == 2:
  53. a = 3
  54. else:
  55. a = 1
  56. if a == 1:
  57. if b == 2:
  58. if c != 3:
  59. c = 3
  60. b = 3
  61. else:
  62. c = 2
  63. elif b == 3:
  64. b = 2
  65. a = 2
  66. elif a == 2:
  67. a = 3
  68. else:
  69. a = 1
  70. if a == 1:
  71. if b == 2:
  72. if c != 3:
  73. c = 3
  74. b = 3
  75. else:
  76. c = 2
  77. elif b == 3:
  78. b = 2
  79. a = 2
  80. elif a == 2:
  81. a = 3
  82. else:
  83. a = 1
  84. if a == 1:
  85. if b == 2:
  86. if c != 3:
  87. c = 3
  88. b = 3
  89. else:
  90. c = 2
  91. elif b == 3:
  92. b = 2
  93. a = 2
  94. elif a == 2:
  95. a = 3
  96. else:
  97. a = 1
  98. if a == 1:
  99. if b == 2:
  100. if c != 3:
  101. c = 3
  102. b = 3
  103. else:
  104. c = 2
  105. elif b == 3:
  106. b = 2
  107. a = 2
  108. elif a == 2:
  109. a = 3
  110. else:
  111. a = 1
  112. if a == 1:
  113. if b == 2:
  114. if c != 3:
  115. c = 3
  116. b = 3
  117. else:
  118. c = 2
  119. elif b == 3:
  120. b = 2
  121. a = 2
  122. elif a == 2:
  123. a = 3
  124. else:
  125. a = 1
  126. if a == 1:
  127. if b == 2:
  128. if c != 3:
  129. c = 3
  130. b = 3
  131. else:
  132. c = 2
  133. elif b == 3:
  134. b = 2
  135. a = 2
  136. elif a == 2:
  137. a = 3
  138. else:
  139. a = 1
  140. if a == 1:
  141. if b == 2:
  142. if c != 3:
  143. c = 3
  144. b = 3
  145. else:
  146. c = 2
  147. elif b == 3:
  148. b = 2
  149. a = 2
  150. elif a == 2:
  151. a = 3
  152. else:
  153. a = 1
  154. if a == 1:
  155. if b == 2:
  156. if c != 3:
  157. c = 3
  158. b = 3
  159. else:
  160. c = 2
  161. elif b == 3:
  162. b = 2
  163. a = 2
  164. elif a == 2:
  165. a = 3
  166. else:
  167. a = 1
  168. if a == 1:
  169. if b == 2:
  170. if c != 3:
  171. c = 3
  172. b = 3
  173. else:
  174. c = 2
  175. elif b == 3:
  176. b = 2
  177. a = 2
  178. elif a == 2:
  179. a = 3
  180. else:
  181. a = 1
  182. if a == 1:
  183. if b == 2:
  184. if c != 3:
  185. c = 3
  186. b = 3
  187. else:
  188. c = 2
  189. elif b == 3:
  190. b = 2
  191. a = 2
  192. elif a == 2:
  193. a = 3
  194. else:
  195. a = 1
  196. if a == 1:
  197. if b == 2:
  198. if c != 3:
  199. c = 3
  200. b = 3
  201. else:
  202. c = 2
  203. elif b == 3:
  204. b = 2
  205. a = 2
  206. elif a == 2:
  207. a = 3
  208. else:
  209. a = 1
  210. if a == 1:
  211. if b == 2:
  212. if c != 3:
  213. c = 3
  214. b = 3
  215. else:
  216. c = 2
  217. elif b == 3:
  218. b = 2
  219. a = 2
  220. elif a == 2:
  221. a = 3
  222. else:
  223. a = 1
  224. if a == 1:
  225. if b == 2:
  226. if c != 3:
  227. c = 3
  228. b = 3
  229. else:
  230. c = 2
  231. elif b == 3:
  232. b = 2
  233. a = 2
  234. elif a == 2:
  235. a = 3
  236. else:
  237. a = 1
  238. if a == 1:
  239. if b == 2:
  240. if c != 3:
  241. c = 3
  242. b = 3
  243. else:
  244. c = 2
  245. elif b == 3:
  246. b = 2
  247. a = 2
  248. elif a == 2:
  249. a = 3
  250. else:
  251. a = 1
  252. if a == 1:
  253. if b == 2:
  254. if c != 3:
  255. c = 3
  256. b = 3
  257. else:
  258. c = 2
  259. elif b == 3:
  260. b = 2
  261. a = 2
  262. elif a == 2:
  263. a = 3
  264. else:
  265. a = 1
  266. if a == 1:
  267. if b == 2:
  268. if c != 3:
  269. c = 3
  270. b = 3
  271. else:
  272. c = 2
  273. elif b == 3:
  274. b = 2
  275. a = 2
  276. elif a == 2:
  277. a = 3
  278. else:
  279. a = 1
  280. if a == 1:
  281. if b == 2:
  282. if c != 3:
  283. c = 3
  284. b = 3
  285. else:
  286. c = 2
  287. elif b == 3:
  288. b = 2
  289. a = 2
  290. elif a == 2:
  291. a = 3
  292. else:
  293. a = 1
  294. if a == 1:
  295. if b == 2:
  296. if c != 3:
  297. c = 3
  298. b = 3
  299. else:
  300. c = 2
  301. elif b == 3:
  302. b = 2
  303. a = 2
  304. elif a == 2:
  305. a = 3
  306. else:
  307. a = 1
  308. if a == 1:
  309. if b == 2:
  310. if c != 3:
  311. c = 3
  312. b = 3
  313. else:
  314. c = 2
  315. elif b == 3:
  316. b = 2
  317. a = 2
  318. elif a == 2:
  319. a = 3
  320. else:
  321. a = 1
  322. if a == 1:
  323. if b == 2:
  324. if c != 3:
  325. c = 3
  326. b = 3
  327. else:
  328. c = 2
  329. elif b == 3:
  330. b = 2
  331. a = 2
  332. elif a == 2:
  333. a = 3
  334. else:
  335. a = 1
  336. if a == 1:
  337. if b == 2:
  338. if c != 3:
  339. c = 3
  340. b = 3
  341. else:
  342. c = 2
  343. elif b == 3:
  344. b = 2
  345. a = 2
  346. elif a == 2:
  347. a = 3
  348. else:
  349. a = 1
  350. if a == 1:
  351. if b == 2:
  352. if c != 3:
  353. c = 3
  354. b = 3
  355. else:
  356. c = 2
  357. elif b == 3:
  358. b = 2
  359. a = 2
  360. elif a == 2:
  361. a = 3
  362. else:
  363. a = 1
  364. if a == 1:
  365. if b == 2:
  366. if c != 3:
  367. c = 3
  368. b = 3
  369. else:
  370. c = 2
  371. elif b == 3:
  372. b = 2
  373. a = 2
  374. elif a == 2:
  375. a = 3
  376. else:
  377. a = 1
  378. if a == 1:
  379. if b == 2:
  380. if c != 3:
  381. c = 3
  382. b = 3
  383. else:
  384. c = 2
  385. elif b == 3:
  386. b = 2
  387. a = 2
  388. elif a == 2:
  389. a = 3
  390. else:
  391. a = 1
  392. if a == 1:
  393. if b == 2:
  394. if c != 3:
  395. c = 3
  396. b = 3
  397. else:
  398. c = 2
  399. elif b == 3:
  400. b = 2
  401. a = 2
  402. elif a == 2:
  403. a = 3
  404. else:
  405. a = 1
  406. if a == 1:
  407. if b == 2:
  408. if c != 3:
  409. c = 3
  410. b = 3
  411. else:
  412. c = 2
  413. elif b == 3:
  414. b = 2
  415. a = 2
  416. elif a == 2:
  417. a = 3
  418. else:
  419. a = 1
  420. if a == 1:
  421. if b == 2:
  422. if c != 3:
  423. c = 3
  424. b = 3
  425. else:
  426. c = 2
  427. elif b == 3:
  428. b = 2
  429. a = 2
  430. elif a == 2:
  431. a = 3
  432. else:
  433. a = 1
  434. if a == 1:
  435. if b == 2:
  436. if c != 3:
  437. c = 3
  438. b = 3
  439. else:
  440. c = 2
  441. elif b == 3:
  442. b = 2
  443. a = 2
  444. elif a == 2:
  445. a = 3
  446. else:
  447. a = 1
  448. def calibrate(self):
  449. a,b,c = 1,2,3
  450. for i in xrange(self.rounds):
  451. pass
  452. class NestedForLoops(Test):
  453. version = 2.0
  454. operations = 1000*10*5
  455. rounds = 300
  456. def test(self):
  457. l1 = range(1000)
  458. l2 = range(10)
  459. l3 = range(5)
  460. for i in xrange(self.rounds):
  461. for i in l1:
  462. for j in l2:
  463. for k in l3:
  464. pass
  465. def calibrate(self):
  466. l1 = range(1000)
  467. l2 = range(10)
  468. l3 = range(5)
  469. for i in xrange(self.rounds):
  470. pass
  471. class ForLoops(Test):
  472. version = 2.0
  473. operations = 5 * 5
  474. rounds = 10000
  475. def test(self):
  476. l1 = range(100)
  477. for i in xrange(self.rounds):
  478. for i in l1:
  479. pass
  480. for i in l1:
  481. pass
  482. for i in l1:
  483. pass
  484. for i in l1:
  485. pass
  486. for i in l1:
  487. pass
  488. for i in l1:
  489. pass
  490. for i in l1:
  491. pass
  492. for i in l1:
  493. pass
  494. for i in l1:
  495. pass
  496. for i in l1:
  497. pass
  498. for i in l1:
  499. pass
  500. for i in l1:
  501. pass
  502. for i in l1:
  503. pass
  504. for i in l1:
  505. pass
  506. for i in l1:
  507. pass
  508. for i in l1:
  509. pass
  510. for i in l1:
  511. pass
  512. for i in l1:
  513. pass
  514. for i in l1:
  515. pass
  516. for i in l1:
  517. pass
  518. for i in l1:
  519. pass
  520. for i in l1:
  521. pass
  522. for i in l1:
  523. pass
  524. for i in l1:
  525. pass
  526. for i in l1:
  527. pass
  528. def calibrate(self):
  529. l1 = range(1000)
  530. for i in xrange(self.rounds):
  531. pass