考虑到这些cProfile结果,我可以改进哪些方面?

时间:2016-04-11 20:58:18

标签: python pygame cprofile

我在python / pygame中创建了一个高级蛇游戏。问题在于游戏已经达到了这样的程度,即当我将新版本放在家用电脑上以便每个人都能玩它时,它运行得太慢了。

我用cprofile运行游戏并得到状态,但我不确定什么是正常的,应该或可以改进什么。

以下是我使用cProfile运行的确切游戏玩法的视频,其后是cProfile结果。谢谢你的帮助!

https://www.youtube.com/watch?v=Txyoq7df_5c&feature=youtu.be 当屏幕变黑时,就是我退出游戏的那一刻。

         1641078 function calls (1641062 primitive calls) in 60.384 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000   60.384   60.384 <string>:1(<module>)
     1785    0.021    0.000    0.021    0.000 Snakey Deluxe.py:117(timeStamp)
        1    0.000    0.000    0.000    0.000 Snakey Deluxe.py:128(playMusic)
     4603    0.045    0.000    8.386    0.002 Snakey Deluxe.py:223(mess_to_screen)
     4603    0.022    0.000    0.504    0.000 Snakey Deluxe.py:229(text_objects)
        1    0.000    0.000    0.051    0.051 Snakey Deluxe.py:233(quit_game)
        1    0.238    0.238   60.384   60.384 Snakey Deluxe.py:801(gameLoop)
     4603    0.025    0.000    2.257    0.000 __init__.py:1114(resource_exists)
     4603    0.022    0.000    2.597    0.001 __init__.py:1130(resource_stream)
     9206    0.056    0.000    0.459    0.000 __init__.py:1556(__init__)
     4603    0.019    0.000    0.935    0.000 __init__.py:1569(has_resource)
     9206    0.042    0.000    0.630    0.000 __init__.py:1638(_fn)
     9206    0.039    0.000    2.356    0.000 __init__.py:1656(__init__)
     9206    0.198    0.000    1.858    0.000 __init__.py:1660(_setup_prefix)
     4603    0.013    0.000    0.597    0.000 __init__.py:1677(_has)
     4603    0.019    0.000    1.337    0.000 __init__.py:1686(get_resource_stream)
     9206    0.023    0.000    0.030    0.000 __init__.py:2935(_get_mro)
     9206    0.041    0.000    0.081    0.000 __init__.py:2942(_find_adapter)
     9206    0.071    0.000    2.536    0.000 __init__.py:389(get_provider)
       32    0.001    0.000    0.001    0.000 apples.py:122(check)
     1824    0.041    0.000    0.063    0.000 apples.py:145(update)
     2270    0.006    0.000    0.009    0.000 apples.py:169(eat)
      893    0.003    0.000    0.003    0.000 apples.py:192(appleGrow)
        1    0.000    0.000    0.000    0.000 apples.py:36(__init__)
    48/32    0.001    0.000    0.003    0.000 apples.py:48(apples)
     4603    0.014    0.000    0.583    0.000 genericpath.py:16(exists)
     9206    0.081    0.000    0.572    0.000 ntpath.py:104(join)
    73648    0.661    0.000    1.671    0.000 ntpath.py:139(splitdrive)
    55236    0.447    0.000    1.924    0.000 ntpath.py:210(split)
     9206    0.023    0.000    0.386    0.000 ntpath.py:251(dirname)
    73648    0.135    0.000    0.214    0.000 ntpath.py:35(_get_empty)
    82854    0.152    0.000    0.241    0.000 ntpath.py:41(_get_sep)
    73648    0.137    0.000    0.212    0.000 ntpath.py:47(_get_altsep)
    64442    0.121    0.000    0.198    0.000 ntpath.py:53(_get_bothseps)
    82854    0.153    0.000    0.244    0.000 ntpath.py:65(_get_colon)
     4603    0.021    0.000    4.876    0.001 pkgdata.py:34(getResource)
      182    0.001    0.000    0.002    0.000 random.py:170(randrange)
      182    0.001    0.000    0.001    0.000 random.py:220(_randbelow)
        1    0.000    0.000    0.000    0.000 snake_skins.py:51(rainbowColor)
        1    0.000    0.000    0.000    0.000 snake_skins.py:58(colorMaker)
        1    0.000    0.000    0.000    0.000 snakes.py:19(__init__)
     1824    0.003    0.000    0.004    0.000 snakes.py:316(turnCheck)
     1136    0.004    0.000    0.006    0.000 snakes.py:340(turnNow)
     1824    0.238    0.000    0.595    0.000 snakes.py:400(draw)
       31    0.000    0.000    0.000    0.000 snakes.py:415(popScore)
        1    0.000    0.000    0.000    0.000 snakes.py:429(popObj)
     1824    0.013    0.000    0.014    0.000 snakes.py:432(objCheck)
     1824    0.070    0.000    0.096    0.000 snakes.py:97(update)
     4603    0.025    0.000    0.214    0.000 sysfont.py:36(_simplename)
     4603    0.105    0.000    0.183    0.000 sysfont.py:37(<listcomp>)
     4603    2.646    0.001    7.522    0.002 sysfont.py:534(font_constructor)
     4603    0.046    0.000    7.804    0.002 sysfont.py:548(SysFont)
        1    0.000    0.000   60.384   60.384 {built-in method exec}
        1    0.000    0.000    0.000    0.000 {built-in method exit}
    36824    0.036    0.000    0.036    0.000 {built-in method getattr}
     1825    0.138    0.000    0.138    0.000 {built-in method get}
   395858    0.437    0.000    0.437    0.000 {built-in method isinstance}
   134283    0.113    0.000    0.113    0.000 {built-in method len}
        1    0.000    0.000    0.000    0.000 {built-in method load}
     4603    1.009    0.000    1.009    0.000 {built-in method open}
        1    0.000    0.000    0.000    0.000 {built-in method play}
        1    0.051    0.051    0.051    0.051 {built-in method quit}
    44124    0.242    0.000    0.242    0.000 {built-in method rect}
        1    0.000    0.000    0.000    0.000 {built-in method set_visible}
        1    0.000    0.000    0.000    0.000 {built-in method set_volume}
     4603    0.569    0.000    0.569    0.000 {built-in method stat}
     1824    1.437    0.001    1.437    0.001 {built-in method update}
     4733    0.004    0.000    0.004    0.000 {method 'append' of 'list' objects}
      182    0.000    0.000    0.000    0.000 {method 'bit_length' of 'int' objects}
    53544    3.773    0.000    3.773    0.000 {method 'blit' of 'pygame.Surface' objects}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
    46030    0.055    0.000    0.055    0.000 {method 'endswith' of 'str' objects}
     1825    0.914    0.001    0.914    0.001 {method 'fill' of 'pygame.Surface' objects}
     9206    0.012    0.000    0.012    0.000 {method 'get' of 'dict' objects}
     4603    0.005    0.000    0.005    0.000 {method 'get_rect' of 'pygame.Surface' objects}
      255    0.000    0.000    0.000    0.000 {method 'getrandbits' of '_random.Random' objects}
    46030    0.040    0.000    0.040    0.000 {method 'isalnum' of 'str' objects}
     4603    0.006    0.000    0.006    0.000 {method 'join' of 'str' objects}
    87457    0.082    0.000    0.082    0.000 {method 'lower' of 'str' objects}
       63    0.000    0.000    0.000    0.000 {method 'remove' of 'list' objects}
     4603    0.476    0.000    0.476    0.000 {method 'render' of 'pygame.font.Font' objects}
    73648    0.090    0.000    0.090    0.000 {method 'replace' of 'str' objects}
    13809    0.025    0.000    0.025    0.000 {method 'split' of 'str' objects}
     1824   44.823    0.025   44.823    0.025 {method 'tick' of 'Clock' objects}

更多信息:当我在家庭计算机上运行游戏时,只要弹出升级动画,游戏就会运行得特别慢。但这只会让我感到困惑,因为除了每一帧都增加了位置之外,它只是做了与绘制其他所有内容相同的事情。

0 个答案:

没有答案