質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1889閲覧

速度を求める際にどれをstd::shared_ptr<>にするべきなのか?

退会済みユーザー

退会済みユーザー

総合スコア0

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/06/30 08:41

提示コードの下部のstatic 変数部ですがこれはアセットを読み込むstatic クラスで一度読み込んだアセットのポインタを取得するクラスです再ロードを防ぐ仕組みです。 その際にstatic変数をスマートポインタ型にしていますがどれをどのようにポインタ型にすればいいのでしょうか?
実行時間を意識したいのですが

cpp

1#ifndef Resource_File_HPP_ 2#define Resource_File_HPP_ 3 4#include <iostream> 5#include <fstream> 6#include <vector> 7 8#include "glew/include/GL/glew.h" 9 10#include "Help.hpp" 11 12/*######################################################################### 13#  Resource取得 14 15説明 16 アセットを取得する 17###########################################################################*/ 18 19namespace FrameWork 20{ 21 class Resource 22 { 23 24 public: 25 26 // ##################### アセット ##################### 27 typedef enum 28 { 29 player, 30 enemy, 31 item, 32 33 shader_BasicMono_vert, 34 shader_BasicMono_frag, 35 36 37 38 }Asset; 39 40 // ##################### テクスチャ ##################### 41 42 //テクスチャ 43 typedef struct 44 { 45 glm::ivec2 size; // 画像サイズ 46 std::shared_ptr<byte> fileData; // 画像データ 47 int channel; // 画像のチャンネル数 48 }Texture; 49 50 // ##################### シェーダー ##################### 51 52 //シェーダー 53 typedef struct 54 { 55 std::shared_ptr<std::vector<GLchar>> fileData; // ラグメント 56 }Shader; 57 58 // ##################### ファイル名 ##################### 59 60 //ファイル名 61 typedef struct 62 { 63 const char* fileName; // ファイル名 64 Asset assetName; // アセット名 65 }Resource_File; 66 67 68 69 static void LoadTexture(Asset assetName); // テクスチャーを読み込み 70 static std::shared_ptr<Texture> getTexture(Asset assetName); // 読み込んだテクスチャーを取得 71 72 static void LoadShader(Asset assetName); // シェーダーを読み込む 73 static std::shared_ptr<std::vector<GLchar>> getShader(Asset assetName); // 読み込んだシェーダーを取得 74 static void InputFile_Ok(std::vector<Resource_File>& data); // ファイルが全部読み込めるかどうか確認する 75 76 private: 77 78 // ##################### テクスチャ ##################### 79 80 //テクスチャデータ 81 typedef struct 82 { 83 std::shared_ptr<Texture> texture; // テクスチャー 84 Asset assetName; // アセット 85 }Texture_Data; 86 87 // ##################### シェーダー ##################### 88 89 //シェーダーデータ 90 typedef struct 91 { 92 std::shared_ptr<Shader> shader; // テクスチャー 93 Asset assetName; // アセット 94 }Shader_Data; 95 96 static std::shared_ptr<std::vector<std::shared_ptr<Texture_Data>>> texture; //テクスチャ 97 static std::shared_ptr<std::vector<std::shared_ptr<Shader_Data>>> shader; //シェーダー 98 99 //std::shared_ptr<std::vector<std::shared_ptr<FrameWork::ShaderData>>> textureReousrce = std::make_shared<std::vector<std::shared_ptr<FrameWork::TexturData>>>(0); 100 //std::shared_ptr<std::vector<std::shared_ptr<FrameWork::SoundData>>> textureReousrce = std::make_shared<std::vector<std::shared_ptr<FrameWork::TexturData>>>(0); 101 static std::shared_ptr<std::vector<Resource_File>> resourceFile; 102 103 static byte FileCheck(const char* fileName);// ファイルが読めるかどうか? 104 static byte LoadShadeFile(const char* vert,const char* frag); // シェーダーファイルを読み込む 105 }; 106 107} 108#endif

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2021/06/30 09:29

・速度 ・「shared_ptrにするかしないか」みたいな話 の両者の間にどのような関連性を考えての質問なのですか? 「shared_ptr を使うか否かで有意に速度差が見られる」とかいった状況にあるのでしょうか?
退会済みユーザー

退会済みユーザー

2021/06/30 09:31

ポインタを使うと早くなるのでその話が聞きたいです。
fana

2021/06/30 09:51

> ポインタを使うと早くなる その話を再現できる最低限のコードを示す等してください. 「ポインタを使う」パターンと「そうでない」パターンの2つのコードとそれらの実行時間とを示さなければ 何の話をしているのかが伝わらないでしょう.
退会済みユーザー

退会済みユーザー

2021/06/30 13:28

高速化なんてのは、きちんと動くものを完成させてから考えればいい話で、基礎的なデバッグすらせず質問しまくってるあなたにはまだ早いです。
episteme

2021/07/02 03:04

> ポインタを使うと早くなる 誰がそんなタワゴトを... 「ポインタを使うと早くなる」じゃなくて 「ポインタを使って早くする」です。 どこが足かせとなって遅いのかを調査/検証し、ソコがポインタ使うことで早くなるか考察します。
guest

回答1

0

ベストアンサー

実行時間を意識したいのですが

推測より計測、プロファイリングしましょう。構造を書き換えるのは、どこの部分で所要時間がかかっているか、それを把握してからです。

投稿2021/06/30 08:47

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問