【C言語】malloc vs calloc

表題の通りC言語でのmalloc+memsetとcallocの速度比べです。

callocはメモリ確保時に0クリアをしますが、mallocではメモリ確保時に何もしません。

そのため、通常はmemsetなどで0クリアを行います。

目的が同じであれば、速度が早いものを実装するのがより良いプログラムを作る秘訣です。

では環境は以下です。

・Raspbian GNU/Linux 8(ゲストOSだと計測結果にブレがあるため、、)

・Linux カーネル 4.4.50-v7+

・glibc 2.19-18+deb8u7

・gcc 4.8.4.

計測方法は以下のとおりです。

・char型の1024バイトのメモリ確保を1000万回ループを行い、clockでの処理時間を計測する。

パターンは以下の通り

・[パターン1]mallocを行う(memsetナシでの速度)

・[パターン2]malloc+memsetを行う

・[パターン3]callocを行う

・[パターン4]malloc+先頭に0x00を代入(先頭を0クリアする目的。文字列を扱うならこれでよい。)

検証結果は以下の通りです。

 

( ゚∀゚)・;’.、ブハッ calloc遅っwww

やり方が間違ってたのかな。。

malloc+memsetで良いですね。文字列の先頭だけをクリアするならば、0x00で。

あくまで参考までにしてください。

 

ソースも貼り付けておきます。

ではここまで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*