get_surface (). blit () против var_screen.blit () - PullRequest
0 голосов
/ 24 апреля 2019

Меня интересует - является ли более производительным сохранение вашей поверхности окна "pygame" в качестве переменной и вызовом blit для каждой переменной изображения или вызовом get_surface (). Blit (...) каждый раз?

Особенно, когда речь идет об играх, есть много и много pngs / sprites / что-то для отображения. Мне было интересно, есть ли у кого-нибудь опыт с производительностью вызова функции вместо сохранения вашего "экрана" в переменной?

Пример один с переменной:

screen =  pygame.display.get_surface()
while True: 
    screen.blit(my_image.png)

Пример два:

while True:
     pygame.display.get_surface().blit(my_image.png)

С уважением, Cribber

1 Ответ

0 голосов
/ 25 апреля 2019

Я сам воспользовался советом и провел тест производительности, и, по-моему, это действительно не имеет значения.

Так что решающим фактором является читабельность, я возьму переменную с помощью screen.blit ().

start_time = time.time()
while i <= 1000:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit() 
            sys.exit()

    #pygame.display.get_surface().blit(png, (x, y))
    screen.blit(png, (x, y))
    pygame.display.flip()
    i += 1
elapsed_time = time.time() - start_time

1) display.get_surface (). Blit ()

Сумма = 14,827981948852539

x100 - Elapsed time: 0.31400012969970703
x1000 - Elapsed time: 2.9339892864227295
x1000 - Elapsed time:  2.897007465362549
x1000 - Elapsed time: 2.9139883518218994
x1000 - Elapsed time: 2.834001064300537
x1000 - Elapsed time: 2.934995651245117

2) screen.blit ()

Сумма = 14,843550443649292

x100 - Elapsed time: 0.2919886112213135
x1000 - Elapsed time: 2.8539986610412598
x1000 - Elapsed time: 2.914994239807129
x1000 - Elapsed time: 2.926569938659668
x1000 - Elapsed time: 2.9420039653778076
x1000 - Elapsed time: 2.9139950275421143
...