« 【株】 2012/09/07(金) +6000 日経△50.28 | トップページ | 【株】 2012/09/10(月) +7600 日経▲5.17 »

【C言語備忘ログ】 2012/09/08(土) memcpyの速度

電文処理でバイト配列と数値型との相互変換というものがしょっちゅう出てきます。

char型配列dataを数バイト使ってシーケンス番号を表現する、などです。

例えば、dataの格納イメージが

data[0] = 0x12
data[1] = 0x34

の時、2byte使って0x1234という数値を意味している、などです。

このdata配列をint型に変換する場合には

int sequence;

sequence = data[0] << 8 | data[1]; ・・・①

などとしますが、ビッグエンディアン時に限り、

memcpy(&sequence, data, 2); ・・・②

とかも出来ます。

んが、このmemcpy(に限らずmem系関数全般)は処理にやたら時間がかかります。
CPUによって差はあるものの②は①の約2倍の時間が掛かります。

エンディアンの影響も受けるし、素直に①でやっといた方がいいですね。

(Windowsなどリトルエンディアン環境下で②を実行するとsequenceには0x3412と格納されます)

« 【株】 2012/09/07(金) +6000 日経△50.28 | トップページ | 【株】 2012/09/10(月) +7600 日経▲5.17 »

C言語」カテゴリの記事

コメント

とても魅力的な記事でした!!
また遊びに来ます!!
ありがとうございます。。

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/36872/46999477

この記事へのトラックバック一覧です: 【C言語備忘ログ】 2012/09/08(土) memcpyの速度:

« 【株】 2012/09/07(金) +6000 日経△50.28 | トップページ | 【株】 2012/09/10(月) +7600 日経▲5.17 »

amazon

マイリスト

  • 暮らしをおトクにかえていく|ポイントインカム
  • 暮らしをおトクにかえていく|ポイントインカム
  • フルーツメール
無料ブログはココログ