No.3ベストアンサー
- 回答日時:
> 高速なプログラムを書く必要の出たときのために型に
> よる処理速度を教えてください。
処理系に依存しますし、処理系のマニュアルにも記載されていない場合が多いので、自分でコンパイル結果を見ながら確認する必要があります。
組み込み用の処理系では、マニュアルにこの辺りの解説が書かれているものをよく見かけます。
一般的には、short型がint型より小さい場合は、何らかの演算の前には汎整数拡張によってint型に暗黙の型変換が起こりますので、その分だけ遅くなる場合があります。ただし、プロセッサのアーキテクチャによっては、こうしたオーバーヘッドが発生しないものも普通に存在します。
浮動小数点型の場合ですが、標準化以前のC言語では、float型はいったんdouble型に暗黙の型変換が行われてから演算していたのですが、標準Cではfloat型はfloat型のまま演算してもよいことになり、多くの処理系はそのようになっています。
また、可変個実引数や、関数原型のない関数の引数としてfloat型の値を渡した場合、既定の実引数拡張によってdouble型に暗黙の型変換が起こります。
いずれにしても、暗黙の型変換が発生し、それにコストがかかるような処理系では、クリティカルな処理では大きな影響が出ることが十分考えられます。
No.4
- 回答日時:
高速なプログラムを書くためには、アルゴリズムやデータ型を気にした方が遙かに有用だとは思いますが。
まず、int に対しては、「そのプロセッサで最も自然なデータの長さを int にする」傾向があります。このため、わざわざ型変換のはいる可能性のある、shot int よりも、速い場合が多いですね。
double に関しては、標準C言語では、浮動小数点データの基準は double だからというのがひとつあります。
たとえば、数学系の関数の返値や引数はすべて double です。また、小数点を含んだ定数( 0.1 とか)は、特に指定がない限り、double 型のデータです。(0.1f だと float 型の定数です)
よって、
float x = 0.1;
// x = (float)0.1; という暗黙の型変換
float y = sin(x);
// y = (float)(sin((double)x)) という暗黙の型変換
などとすると、そのたびに型変換が発生します。
この分のオーバーヘッドでしょう。
No.2
- 回答日時:
一口にshort、int、long、float、doubleといっても何バイトを割り当てるかは
それぞれの処理系(ハードとコンパイラー)の実態に合わせて決めることに成っています。
従って一概には言えません。
例えばintを標準的に扱うマシンで仮にshortを扱うとすれば前後に変換が入る分だけ
遅くなります。
どうしても気になるならそれぞれの実装(機種とコンパイラー)で
ベンチマークテストをやってみるしかありません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- その他(プログラミング・Web制作) 物理の斜方投射のシミュレーションにおける位置や速度の単位について 4 2023/05/31 09:50
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
- その他(IT・Webサービス) 高速処理可能な表計算ソフトについて ExcelやGoogleスプレッドシートのような表計算ソフトで、 2 2023/04/29 16:06
- iPhone(アイフォーン) iPhone8ってサクサクですか?マイクラ、原神に向いてますか?iPhone6から6sになった時処理 2 2023/02/19 10:43
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- アプリ iPhone処理速度について 最新iPhoneからcpu性能どれだけ上げでもあまりアプリを開く速度が 3 2023/02/07 03:48
- 発達障害・ダウン症・自閉症 処理速度(ワーキング処理)の数値が低い人は同時作業が苦手だそうですが、弾き語りは難しいでしょうか。 3 2023/03/30 14:16
- 物理学 特殊相対性理論を、完全否定に成功~ガンマの数式は、成立しない。 2 2023/03/08 19:30
- ノートパソコン PCのメモリーについて: 教えて下さい 3 2022/04/16 11:12
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
C言語での引数の省略方法
C言語・C++・C#
-
intとlongは同じ?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C言語を実行すると-infが出てき...
-
doubleの変数にintとintの割り...
-
c言語で、繰り返し文の中で、0....
-
至急です! マクロ定義で #defi...
-
C 開放してるのにエラー(doubl...
-
2分法で方程式の複数の解を自...
-
doubleは常に%lfとするべきなのか
-
物体が往復する動きを作りたい
-
C言語で台形公式を使った二重積...
-
-1.#IND00と出てしまうのですが...
-
2次方程式の解を求めるプログ...
-
平均を求めるプログラムを作っ...
-
difftime()について
-
c言語のプログラミングについて...
-
2次元配列 CXX0030とい...
-
C言語でポインタを用いた平均,...
-
math.h等について
-
C言語について(三角形の面積・d...
-
C++で割り算の結果を昇順に出力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C言語を実行すると-infが出てき...
-
c言語で、繰り返し文の中で、0....
-
C 開放してるのにエラー(doubl...
-
doubleの変数にintとintの割り...
-
至急です! マクロ定義で #defi...
-
C言語 関数プロトタイプ宣言の...
-
C言語の型による処理速度の違い
-
float型とdouble型の変数の違い...
-
int とdoubleの比較
-
関数におけるif文とreturn文に...
-
Cで3乗根を求める方法
-
2次方程式の解を求めるプログ...
-
c言語のコンパイルエラー canno...
-
浮動小数点の定数
-
-1.#IND00と出てしまうのですが...
-
doubleは常に%lfとするべきなのか
-
C言語のpow関数の不具合
-
difftime()について
-
C++で外積
おすすめ情報