Oziomajnr / PgnToGif

An android application to help convert your chess games to animated gifs
https://play.google.com/store/apps/details?id=com.chunkymonkey.imagetogifconverter
2 stars 1 forks source link

Improve performance of Gif generation #11

Open Oziomajnr opened 2 years ago

Oziomajnr commented 2 years ago

Currently very long chess games >100 moves take about 2 minutes to generate Gifs, this could be improved by using multiple threads to create the bitmaps.

We could do 20 moves per thread.

Oziomajnr commented 2 years ago

Performance should be measure by the number of seconds required to generate the Gif for this game

[Event "Belgrade"] [Site "Belgrade YUG"] [Date "1989.02.17"] [Round "?"] [White "Ivan Nikolic"] [Black "Goran Arsovic"] [Result "1/2-1/2"] [ECO "E95"] [PlyCount "538"] [EventDate "1989.??.??"]

  1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 Nbd7 7. O-O e5 8. Re1 Re8 9. Bf1 h6 10. d5 Nh7 11. Rb1 f5 12. Nd2 f4 13. b4 g5 14. Nb3 Bf8 15. Be2 Ndf6 16. c5 g4 17. cxd6 cxd6 18. a3 Ng5 19. Bf1 Re7 20. Qd3 Rg7 21. Kh1 Qe8 22. Nd2 g3 23. fxg3 fxg3 24. Qxg3 Nh3 25. Qf3 Qg6 26. Nc4 Bd7 27. Bd3 Ng5 28. Bxg5 Qxg5 29. Ne3 Re8 30. Ne2 Be7 31. Rbd1 Rf8 32. Nf5 Ng4 33. Neg3 h5 34. Kg1 h4 35. Qxg4 Qxg4 36. Nh6+ Kh7 37. Nxg4 hxg3 38. Ne3 gxh2+ 39. Kxh2 Rh8 40. Rh1 Kg6+ 41. Kg1 Rc8 42. Be2 Rc3 43. Rd3 Rc1+ 44. Nf1 Bd8 45. Rh8 Bb6+ 46. Kh2 Rh7+ 47. Rxh7 Kxh7 48. Nd2 Bg1+ 49. Kh1 Bd4+ 50. Nf1 Bg4 51. Bxg4 Rxf1+ 52. Kh2 Bg1+ 53. Kh3 Re1 54. Bf5+ Kh6 55. Kg4 Re3 56. Rd1 Bh2 57. Rh1 Rg3+ 58. Kh4 Rxg2 59. Kh3 Rg3+
  2. Kxh2 Rxa3 61. Rg1 Ra6 62. Rg6+ Kh5 63. Kg3 Rb6 64. Rg7 Rxb4 65. Bc8 a5 66. Bxb7 a4 67. Bc6 a3 68. Ra7 Rb3+ 69. Kf2 Kg5 70. Ke2 Kf4 71. Ra4 Rh3 72. Kd2 a2
  3. Bb5 Rh1 74. Rxa2 Rh2+ 75. Be2 Kxe4 76. Ra5 Kd4 77. Ke1 Rh1+ 78. Kf2 Rc1 79. Bg4 Rc2+ 80. Ke1 e4 81. Be6 Ke5 82. Bg8 Rc8 83. Bf7 Rc7 84. Be6 Rc2 85. Ra8 Rb2
  4. Ra6 Rg2 87. Kd1 Rb2 88. Ra5 Rg2 89. Bd7 Rh2 90. Bc6 Kf4 91. Ra8 e3 92. Re8 Kf3 93. Rf8+ Ke4 94. Rf6 Kd3 95. Bb5+ Kd4 96. Rf5 Rh1+ 97. Ke2 Rh2+ 98. Kd1 Rh1+
  5. Kc2 Rh2+ 100. Kc1 Rh1+ 101. Kc2 Rh2+ 102. Kd1 Rh1+ 103. Ke2 Rh2+ 104. Kf1 Rb2 105. Be2 Ke4 106. Rh5 Rb1+ 107. Kg2 Rb2 108. Rh4+ Kxd5 109. Kf3 Kc5 110. Kxe3 Rb3+ 111. Bd3 d5 112. Rh8 Ra3 113. Re8 Kd6 114. Kd4 Ra4+ 115. Kc3 Ra3+ 116. Kd4 Ra4+ 117. Ke3 Ra3 118. Rh8 Ke5 119. Rh5+ Kd6 120. Rg5 Rb3 121. Kd2 Rb8 122. Bf1 Re8 123. Kd3 Re5 124. Rg8 Rh5 125. Bg2 Kc5 126. Rf8 Rh6 127. Bf3 Rd6 128. Re8 Rc6 129. Ra8 Rb6 130. Rd8 Rd6 131. Rf8 Ra6 132. Rf5 Rd6 133. Kc3 Rd8 134. Rg5 Rd6 135. Rh5 Rd8 136. Rf5 Rd6 137. Rf8 Ra6 138. Re8 Rc6 139. Ra8 Rb6 140. Ra5+ Rb5 141. Ra1 Rb8 142. Rd1 Rd8 143. Rd2 Rd7 144. Bg2 Rd8 145. Kd3 Ra8 146. Ke3 Re8+ 147. Kd3 Ra8 148. Kc3 Rd8 149. Bf3 Rd7 150. Kd3 Ra7 151. Bg2 Ra8 152. Rc2+ Kd6 153. Rc3 Ra2 154. Bf3 Ra8 155. Rb3 Ra5 156. Ke3 Ke5 157. Rd3 Rb5 158. Kd2 Rc5 159. Bg2 Ra5 160. Bf3 Rc5 161. Bd1 Rc8 162. Bb3 Rc5 163. Rh3 Kf4 164. Kd3 Ke5 165. Rh5+ Kf4 166. Kd4 Rb5 167. Bxd5 Rb4+ 168. Bc4 Ra4 169. Rh7 Kg5 170. Rf7 Kg6 171. Rf1 Kg5 172. Kc5 Ra5+ 173. Kc6 Ra4 174. Bd5 Rf4 175. Re1 Rf6+ 176. Kc5 Rf5 177. Kd4 Kf6 178. Re6+ Kg5 179. Be4 Rf6 180. Re8 Kf4 181. Rh8 Rd6+ 182. Bd5 Rf6 183. Rh1 Kf5 184. Be4+ Ke6 185. Ra1 Kd6 186. Ra5 Re6 187. Bf5 Re1 188. Ra6+ Ke7 189. Be4 Rc1 190. Ke5 Rc5+ 191. Bd5 Rc7 192. Rg6 Rd7 193. Rh6 Kd8 194. Be6 Rd2 195. Rh7 Ke8 196. Kf6 Kd8 197. Ke5 Rd1 198. Bd5 Ke8 199. Kd6 Kf8 200. Rf7+ Ke8 201. Rg7 Rf1 202. Rg8+ Rf8 203. Rg7 Rf6+ 204. Be6 Rf2 205. Bd5 Rf6+
  6. Ke5 Rf1 207. Kd6 Rf6+ 208. Be6 Rf2 209. Ra7 Kf8 210. Rc7 Rd2+ 211. Ke5 Ke8
  7. Kf6 Rf2+ 213. Bf5 Rd2 214. Rc1 Rd6+ 215. Be6 Rd2 216. Rh1 Kd8 217. Rh7 Rd1
  8. Rg7 Rd2 219. Rg8+ Kc7 220. Rc8+ Kb6 221. Ke5 Kb7 222. Rc3 Kb6 223. Bd5 Rh2
  9. Kd6 Rh6+ 225. Be6 Rh5 226. Ra3 Ra5 227. Rg3 Rh5 228. Rg2 Ka5 229. Rg3 Kb6
  10. Rg4 Rb5 231. Bd5 Rc5 232. Rg8 Rc2 233. Rb8+ Ka5 234. Bb3 Rc3 235. Kd5 Rc7
  11. Kd4 Rd7+ 237. Bd5 Re7 238. Rb2 Re8 239. Rb7 Ka6 240. Rb1 Ka5 241. Bc4 Rd8+
  12. Kc3 Rh8 243. Rb5+ Ka4 244. Rb6 Rh3+ 245. Bd3 Rh5 246. Re6 Rg5 247. Rh6 Rc5+
  13. Bc4 Rg5 249. Ra6+ Ra5 250. Rh6 Rg5 251. Rh4 Ka5 252. Rh2 Rg3+ 253. Kd4 Rg5
  14. Bd5 Ka4 255. Kc5 Rg3 256. Ra2+ Ra3 257. Rb2 Rg3 258. Rh2 Rc3+ 259. Bc4 Rg3
  15. Rb2 Rg5+ 261. Bd5 Rg3 262. Rh2 Rc3+ 263. Bc4 Rg3 264. Rh8 Ka3 265. Ra8+ Kb2
  16. Ra2+ Kb1 267. Rf2 Kc1 268. Kd4 Kd1 269. Bd3 Rg7 1/2-1/2
Oziomajnr commented 2 weeks ago

Actually, use Hikaru vs Rybka

[Event "ICC blitz 3 0"] [Site "Internet Chess Club"] [Date "2008.03.15"] [EventDate "?"] [Round "-"] [Result "0-1"] [White "Rybka (Computer)"] [Black "Hikaru Nakamura"] [ECO "A00"] [WhiteElo "?"] [BlackElo "2697"] [PlyCount "542"]

  1. g4 d5 2. h3 h5 3. g5 g6 4. d4 Bg7 5. Nc3 c6 6. Nf3 Bf5
  2. Nh4 e6 8. Nxf5 exf5 9. Bf4 Ne7 10. e3 O-O 11. Qd2 Nd7
  3. O-O-O Re8 13. Bg2 Nf8 14. Be5 Ne6 15. f4 Nc8 16. Kb1 Nd6
  4. Bf1 Qd7 18. a4 b6 19. Ba6 Nc7 20. Be2 a6 21. Bd3 b5 22. h4 Ne6 23. Ne2 Re7 24. Ka1 Ree8 25. Qa5 Nb7 26. Qd2 Nd6 27. Rh2 Bf8 28. Rf2 Ng7 29. a5 Nb7 30. Ng1 Qd8 31. b4 Qd7 32. Nf3 Nd6
  5. Bxd6 Bxd6 34. Ne5 Qb7 35. Kb2 Rac8 36. c3 Re7 37. Be2 Ree8
  6. Bf3 Re7 39. Qc2 Rd8 40. Rfd2 Bb8 41. Be2 Re6 42. Bd3 Re7
  7. Rf2 Re6 44. Qd2 Re7 45. Rg1 Re6 46. Rff1 Re7 47. Qd1 Re6
  8. Rg2 Re7 49. Qc2 Re6 50. Rfg1 Re7 51. Rf2 Re6 52. Qe2 Re7
  9. Qf3 Re6 54. Rd2 Re7 55. Rgd1 Re6 56. Qg3 Re7 57. Kb1 Re6
  10. Bc2 Re7 59. Nd3 Re6 60. Nc5 Qc8 61. Nxe6 Qxe6 62. Kb2 Re8
  11. Re1 Qd7 64. Qf3 Re7 65. Bd3 Re8 66. Rg2 Re7 67. Kb3 Re8
  12. Ra2 Re7 69. Rc1 Re8 70. Rca1 Re7 71. Rg1 Re8 72. Rh2 Re7
  13. Qg3 Re8 74. Ka3 Re7 75. Rb1 Re8 76. Rd2 Re7 77. Kb3 Re8
  14. Ra1 Re7 79. Kb2 Re8 80. Re2 Re7 81. Ree1 Re6 82. Qf3 Qe7
  15. Qf2 Qe8 84. Be2 Qe7 85. Bd1 Qe8 86. Bf3 Qe7 87. Qd2 Qe8
  16. Kb3 Qe7 89. Kc2 Qe8 90. Kb2 Qe7 91. Rab1 Kf8 92. Qf2 Ke8
  17. Be2 Kd8 94. Bd3 Qe8 95. Qf3 Ke7 96. Kb3 Kf8 97. Ra1 Qe7
  18. Bc2 Kg8 99. Kb2 Qe8 100. Qf2 Qe7 101. Qd2 Qe8 102. Bd3 Qe7
  19. Be2 Qe8 104. Rad1 Qe7 105. Rc1 Qe8 106. Bf3 Qe7 107. Qf2 Qe8 108. Rcd1 Qe7 109. Be2 Re4 110. Bd3 Qe6 111. Bxe4 fxe4
  20. Ra1 Nf5 113. Kb3 Kf8 114. Rh1 Ke8 115. Rh2 Kd7 116. Qe1 Kd8 117. Rd1 Kd7 118. Rc2 Kd8 119. Qf2 Nd6 120. Ka2 Qf5
  21. Rh1 Kd7 122. Qg3 Ke6 123. Qh3 Ke7 124. Qxf5 Nxf5 125. Rh3 Ke6 126. Kb3 Bc7 127. Re2 Bb8 128. Re1 Bc7 129. Ra1 Bb8
  22. Rd1 Bc7 131. Re1 Bb8 132. Re2 Bc7 133. Rg2 Bb8 134. Rg1 Bc7 135. Rb1 Bb8 136. Rbh1 Bc7 137. Rg1 Bb8 138. Kb2 Bc7
  23. Kc2 Bb8 140. Kd2 Bc7 141. Rh2 Bb8 142. Rc1 Bc7 143. Ra1 Bb8 144. Ke2 Bc7 145. Rg1 Bb8 146. Rhh1 Bc7 147. Kd2 Bb8
  24. Rc1 Bc7 149. Rh3 Bb8 150. Ra1 Bc7 151. Rhh1 Bb8 152. Rae1 Bc7 153. Rh2 Bb8 154. Rh3 Bc7 155. Ra1 Bb8 156. Kc2 Bc7
  25. Rf1 Bb8 158. Kb3 Bc7 159. Rf2 Bb8 160. Kc2 Bc7 161. Rg2 Bb8 162. Kd2 Bc7 163. Rh1 Bb8 164. Rf2 Bc7 165. Rfh2 Bb8
  26. Rd1 Bc7 167. Rf1 Bb8 168. Re1 Bc7 169. Ke2 Bb8 170. Rh3 Bc7 171. Kd2 Bb8 172. Kc2 Bc7 173. Rb1 Bb8 174. c4 dxc4
  27. Kb2 Bd6 176. Ka3 Ne7 177. Rb2 Nd5 178. Rg3 Kf5 179. Rb1 Be7 180. Rh3 Bd6 181. Kb2 Be7 182. Re1 Bxb4 183. Re2 Bxa5
  28. Kc1 Bb6 185. Kc2 a5 186. Rh1 a4 187. Kc1 a3 188. Rc2 Ba5
  29. Rh3 Bb4 190. Re2 Bd6 191. Re1 b4 192. Kb1 b3 193. Rh2 c3
  30. Rc2 Bb4 195. Ka1 bxc2 196. Ka2 Nxe3 197. Kb3 Kxf4
  31. Rc1 c5 199. dxc5 Bxc5 200. Rh1 Kg3 201. Ra1 Kxh4 202. Rc1 Kxg5 203. Rg1+ Kf4 204. Rh1 g5 205. Ra1 h4 206. Rc1 h3
  32. Kxc3 g4 208. Kb3 g3 209. Ka4 g2 210. Kb5 Bd4 211. Ka6 Bb2
  33. Ka7 Bxc1 213. Kb7 Bb2 214. Kb8 h2 215. Kb7 f5 216. Kb6 Ke5 217. Kc6 f4 218. Kb5 f3 219. Kb6 a2 220. Kb7 f2 221. Kc8 f1=B 222. Kb7 g1=B 223. Kb8 h1=B 224. Kb7 c1=N 225. Kc6 a1=B
  34. Kd7 Nd5 227. Ke8 Ne7 228. Kxe7 Nd3 229. Kf7 Nc5 230. Ke7 Nd7 231. Kxd7 e3 232. Kd8 e2 233. Kc7 e1=B 234. Kd8 Ba5+
  35. Ke8 Bd8 236. Kf8 Be7+ 237. Kxe7 Bb5 238. Kf8 Bd5 239. Ke7 Bb6 240. Kf8 Bd8 241. Kg7 Ba3 242. Kh6 Bf8+ 243. Kh5 Bf7+
  36. Kg4 Bf1 245. Kg3 Bd4 246. Kg4 Bf2 247. Kf3 Be1 248. Kg4 Bg6 249. Kf3 Bh5+ 250. Ke3 Bh3 251. Kd3 Bg6+ 252. Kc4 Bd7
  37. Kb3 Bb5 254. Ka2 Bda5 255. Kb2 Bfb4 256. Ka2 Bec3
  38. Kb3 Bbd3 258. Ka4 Bc2+ 259. Kb5 Be8+ 260. Ka6 Bc6
  39. Ka7 Bd3 262. Kb8 Bdb5 263. Kc8 Kd6 264. Kb8 Bf6 265. Kc8 Kd5 266. Kb8 Bd6+ 267. Kc8 Bd7+ 268. Kb7 Bd4 269. Ka8 Bac7
  40. Kb7 Bdb6 271. Ka8 Bbc6# 0-1