#現状
極端に動作重たい
質問内容
提示コードのコメント部のコードですがこれは処理を待機する関数とした正しいのでしょうか?実際下記のテキストファイル等に待機するミリ秒が表示されるのですがこれは60フレームでの待機ミリ秒のため問題なと思うんですが動作が極端に遅くなります。
std::this_thread::sleep_for(std::chrono::milliseconds(wait)); 関数はミリ秒待機する関数ですがこれが悪いのでしょうか?
原因がわかりません。
参考サイトA: https://marycore.jp/prog/objective-c/sleep-process/#sleep%E9%96%A2%E6%95%B0
参考サイトB: https://cpprefjp.github.io/reference/chrono.html
textfile
117 217 316 417 517 615 717 817 916 1017 11
cpp
1#ifndef ___FPS_H_ 2#define ___FPS_H_ 3 4 5#include <iostream> 6#include <chrono> 7#include <thread> 8#include <time.h> 9#include <fstream> 10 11 12 13class Fps 14{ 15public: 16 Fps(); 17 ~Fps(); 18 19 void Wait(); 20 void Update(); 21 22private: 23 24 long long getMilliSeconds(); 25 26 27 long long count; 28 long long start; 29 long long wait; 30 long long fps = 60; 31 32}; 33 34 35 36#endif
#include <iostream> #include <chrono> #include "../header/Fps.hpp" #include "../lib/ncurses/include/curses.h" #include "../header/Log.hpp" Fps::Fps() { wait = 0; start = 0; count = 0; } //ミリ秒を取得 long long Fps::getMilliSeconds() { std::chrono::system_clock::time_point time = std::chrono::system_clock::now(); std::chrono::milliseconds tp_msec = std::chrono::duration_cast<std::chrono::milliseconds>(time.time_since_epoch()); long long all_msec = tp_msec.count();//経過時間を総ミリ秒(整数値)に変換 return all_msec; } void Fps::Wait() { long long t = getMilliSeconds() - start; //Print("t %lld",t); //Print("(count * 1000 / fps) %lld",(count * 1000 / fps)); wait = (count * 1000 / fps) - t; //Print("%lld\n",wait); if(wait > 0) { //Print("%lld\n",wait); std::this_thread::sleep_for(std::chrono::milliseconds(wait)); } } void Fps::Update() { if(count == 0) { start = getMilliSeconds(); } else if(count == fps) { start = getMilliSeconds(); count = 0; } count++; } Fps::~Fps() { }
//Main.cpp while (true) { fps->Update(); entry->Update(); //更新 entry->Renderer(); //描画 if(entry->getChangeScene() == Scene::SceneType::Exit) { break; } fps->Wait(); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/15 04:16
退会済みユーザー
2021/09/15 10:45 編集
2021/09/15 17:21
2021/09/15 17:28
退会済みユーザー
2021/09/16 00:38
2021/09/17 07:56
2021/09/17 07:57