Форум программистов, компьютерный форум, киберфорум
SFML
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для javay
0 / 0 / 0
Регистрация: 07.08.2016
Сообщений: 105

Почему падает производительность?

07.09.2019, 19:52. Показов 1468. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include "pch.h"
#include <iostream>
#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
    RenderWindow window(sf::VideoMode(640, 480), "Lesson 6. kychka-pc.ru");
 
 
 
    Texture herotexture;
    herotexture.loadFromFile("https://www.cyberforum.ru/images/hero.png");
 
    Sprite herosprite;
    herosprite.setTexture(herotexture);
    herosprite.setTextureRect(IntRect(0, 192, 96, 96));
    herosprite.setPosition(250, 250);
 
    float heroteleporttimer = 0; //создаем для примера телепортации героя через 3 секунды
    Clock clock; //создаем переменную времени, т.о. привязка ко времени(а не мощности/загруженности процессора). 
 
 
 
    while (window.isOpen())
    {
 
        float time = clock.getElapsedTime().asMicroseconds(); //дать прошедшее время в микросекундах
        
        clock.restart(); //перезагружает время
        time = time / 800; //скорость игры
        std::cout << time << "\n";//смотрим как живет время (перезагружается, как видим)
        
 
        heroteleporttimer += time;//прибавляем к нашей переменной time
 
        if (heroteleporttimer > 3000) { herosprite.setPosition(0, 120); heroteleporttimer = 0; } //если таймертелепорта больше 3000 (это примерно 3 секунды), то телепортируем героя и обнуляем таймер телепортации
 
 
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
 
        if ((Keyboard::isKeyPressed(Keyboard::Left) || (Keyboard::isKeyPressed(Keyboard::A)))) { herosprite.move(-0.1*time, 0); herosprite.setTextureRect(IntRect(0, 96, 96, 96)); } //-0,1 это скорость, умножаем её на наше время и получаем пройденное расстояние
        if ((Keyboard::isKeyPressed(Keyboard::Right) || (Keyboard::isKeyPressed(Keyboard::D)))) { herosprite.move(0.1*time, 0); herosprite.setTextureRect(IntRect(0, 192, 96, 96)); } // см коммент выше
        if ((Keyboard::isKeyPressed(Keyboard::Up) || (Keyboard::isKeyPressed(Keyboard::W)))) { herosprite.move(0, -0.1*time); herosprite.setTextureRect(IntRect(0, 288, 96, 96)); }// см выше
        if ((Keyboard::isKeyPressed(Keyboard::Down) || (Keyboard::isKeyPressed(Keyboard::S)))) { herosprite.move(0, 0.1*time); herosprite.setTextureRect(IntRect(0, 0, 96, 96)); }// см выше
 
 
        window.clear();
        window.draw(herosprite);
        window.display();
    }
 
    return 0;
}
но если строчку кода "std::cout << time << "\n";" поставить над clock.restart(); то очень сильно падает скорость движения квадрата.Почему?
И еще почему если мы пишем "std::cout << time << "\n";" вообще до объявления переменной time,прям перед ней,у нас не выдает ошибку???
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.09.2019, 19:52
Ответы с готовыми решениями:

Падает производительность
Здравствуйте. Подскажите в чём может быть проблема. После включения и запуска игры(любой) через минут 20-30 начинает падать...

Падает производительность видеокарты
Доброй ночи всем! мой ноутбук Asus R704v ЦП DualCore Intel Pentium 2020M, 2400 MHz (24 x 100) Видеоадаптер Intel(R) HD Graphics ...

Падает производительность процессора
Люди, подскажите... За последний месяц я три раза проверял производительность своего компа на семерке, и после каждой проверки...

1
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
07.09.2019, 20:27
Цитата Сообщение от javay Посмотреть сообщение
но если строчку кода "std::cout << time << "\n";" поставить над clock.restart(); то очень сильно падает скорость движения квадрата.Почему?
Думаю, потому что std::cout << ... это довольно тормозная операция, а время, прошедшее между clock.getElapsedTime() и clock.restart(); как-то влияет на эту скорость. Но это только догадки, проверь, поставь между этими вызовами задержку.

Добавлено через 2 минуты
Цитата Сообщение от javay Посмотреть сообщение
И еще почему если мы пишем "std::cout << time << "\n";" вообще до объявления переменной time,прям перед ней,у нас не выдает ошибку???
Наверное, потому что в этом случае выводится адрес стандартной функции time(time_t *). Переименуй переменную и смотри предупреждения компилятора
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.09.2019, 20:27
Помогаю со студенческими работами здесь

Падает производительность приложения
Подскажите пожалуйста. Я делаю приложение на WPF. Приложение похоже чем-то на интернет магазин, есть меню со списком категорий, есть список...

Падает производительность у видеокарты
не давно купил новый проц (с матерью) и видюху. Проц - FX-8300, видяха Radeon rx 560. В последнее время у меня падает в играх фпс и...

Падает производительность на короткое время
У меня ноутбук Lenovo ThinkPad. Недавно заметил за ним проблему,когда охлаждение работает в спокойном режиме,то в играх фпс нормальный, как...

Постоянно падает производительность в играх
Брат жаловался на пролаги в играх Поставил чистую 10ку,все дрова новые. Да,системный блок почистил. Проблема такая:Падает...

падает производительность при инсталяции
здравствуйте, у меня acer aspire 5745g 5464g64Mnks, машинка не слабая, но вот какая проблема при установке чего либо( игры, программы,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru