2012年9月21日

なぜポインタのほうが高速なのか?

CHoge Hoge; Hoge.init();と CHoge* pHoge = new CHoge; pHoge->init(); の違いが分からなくてTwitterで呟いたところから始まります。 忘れないためにまとめました。見やすいように少しだけ変えてます。 続きを読む
4
ぷらたん @prata0x

CHoge Hoge; Hoge.init(); CHoge* pHoge = new CHoge; pHoge->init(); わからん。

2012-09-19 21:01:51
かずきち【サイタマスク】 @kazukizm

@prata0x 自分が意図したタイミングでメモリを開放したい、あるいはreturnや引数で渡すクラス(データの塊)が巨大過ぎてボトルネックになるというような理由がなければ、あらゆるクラスは CHoge Hoge; Hoge.init();  でいいよ。

2012-09-19 21:12:38
ぷらたん @prata0x

@kazukizm さっぱり(´・ω・`) ちなみにフォントなんですか?

2012-09-19 21:28:42
かずきち【サイタマスク】 @kazukizm

@prata0x フォントはmonacoっていうmac固有のやつw

2012-09-19 21:33:31
ぷらたん @prata0x

@kazukizm うわああああああ!monacoちゃんかあああああ! Winで近いのconsolas辺りですかね、あれ日本語ありませんけど(´・ω・`) どっちが早いんですか!!

2012-09-19 21:34:54
かずきち【サイタマスク】 @kazukizm

@prata0x で、正解は、AとBではA(ポインタ)の方が早いです。何故かというと。。。ききたい?w

2012-09-19 21:34:22
かずきち【サイタマスク】 @kazukizm

@prata0x 良い反応でオジさん嬉しくなっちゃうwww では基本として、C/C++で言う所のchar型、int型、long型の方の大きさはぞれぞれ何byte(bit)か分かるかな??

2012-09-19 21:37:01
ぷらたん @prata0x

@kazukizm ええっと、処理系によって違うけど通常8,32,64とかでしたっけ? …こんなにあったっけ? (´・ω・)(・ω・`)

2012-09-19 21:40:37
かずきち【サイタマスク】 @kazukizm

@prata0x そそそ。さすがぷらたん。処理系に依存って所も知っていてエレガントです。 16bitCPUなら、8、16、32 32bitCPUなら8、32、64です。ぐっどぐっど。

2012-09-19 21:42:59
かずきち【サイタマスク】 @kazukizm

@prata0x ここまではパーヘクト。では、CHoge型っていうのは、一体何bitの型なんだろう・・・???

2012-09-19 21:44:22
ぷらたん @prata0x

@kazukizm え…!? ググっていいですか←

2012-09-19 21:45:36
かずきち【サイタマスク】 @kazukizm

@prata0x わはは!実はぐぐっても出て来ません。なぜなら、CHoge型と言うのは、どれだけ頑張ってクラスを実装したかによって大きくなるんです。つまり、関数やメンバをいっぱい詰め込めばそれだけ大きくなるんです。

2012-09-19 21:47:46
かずきち【サイタマスク】 @kazukizm

@prata0x では便宜上、CHogeクラスの大きさは10バイトくらいにしておきますかw

2012-09-19 21:51:16
かずきち【サイタマスク】 @kazukizm

@prata0x びっくりだろう?でも、1つのクラスにchar型のメンバが10個宣言されてたら10バイトの大きさ、char型のメンバが100個宣言されてたら100バイトの大きさ。。。と言えばしっくりくる気がしない?

2012-09-19 21:55:14
かずきち【サイタマスク】 @kazukizm

@prata0x では、次の問題です! char*型 int*型 long*型 CHoge*型 いわゆるポインタ変数だね。 この子たちはそれぞれ、何バイトでしょ〜か?

2012-09-19 21:57:39
ぷらたん @prata0x

@kazukizm ふぁ、そうかポインタはアドレスだから4バイトや8バイト… でしたっけ?

2012-09-19 22:04:33
かずきち【サイタマスク】 @kazukizm

@prata0x おっ!!!さすが!その通り!アドレスを指す変数は4バイトか8バイト。 なんだよ〜。ぷらたん、全部知ってるんじゃないの?w

2012-09-19 22:07:37
残りを読む(39)

コメント

Tsuyoshi CHO @tsuyoshi_cho 2012年9月22日
代入のほうはコピーコンストラクタが動くのもあると思うけど
0
masa @Warp013 2012年9月23日
そうそう、そうだったなぁ~と。。。 勉強になりましたm(_ _)m
0