
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
float型とdouble型の変数の違い...
-
C 開放してるのにエラー(doubl...
-
プログラムでの数字につく”f”の...
-
数値を指数部と仮数部に分離したい
-
C言語でsqrt(a^2+b^2)のテーブ...
-
doubleの変数にintとintの割り...
-
2分法で方程式の複数の解を自...
-
C言語のデバック 領域の二重解...
-
C++で等差数列の和に関する問題...
-
極座標から直交座標に変換
-
プログラミングでのテイラー展開
-
C言語でdouble型の小数点の引き...
-
int とdoubleの比較
-
C言語 質問です。
-
ボール同士の衝突
-
浮動小数点の比較について
-
floating point not loadedとは?
-
C言語
-
ガウスの消去法
-
fgets()による繰り返し入力(c言語)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C 開放してるのにエラー(doubl...
-
float型とdouble型の変数の違い...
-
至急です! マクロ定義で #defi...
-
doubleの変数にintとintの割り...
-
C言語を実行すると-infが出てき...
-
C言語の型による処理速度の違い
-
C言語 関数プロトタイプ宣言の...
-
浮動小数点の定数
-
C言語でdouble型の小数点の引き...
-
difftime()について
-
doubleは常に%lfとするべきなのか
-
C#イベント中の戻り値の設定の...
-
c言語で、繰り返し文の中で、0....
-
int とdoubleの比較
-
C言語のプログラムで#include<m...
-
c言語のプログラミングについて...
-
バイナリから実数を取得したい...
-
c言語のコンパイルエラー canno...
-
関数におけるif文とreturn文に...
おすすめ情報