C400

71. strcat, strncat より memcpy を使ってスピード・アップ !!

以前に strcpy より memcpy を使うとパフォーマンスの改善に繋がると
紹介したが、さらに strcat, strncat (文字列の結合) よりは
memcpy を使ったほうが圧倒的に速いことが、わかった。

【 例 】

strncat(m_XML, asc_xml, len)

memcpy(&m_XML[m_XML_byte], asc_xml, len);
m_XML_byte += len;

のように変更すると劇的な速さの向上が見られた。
先の strncat の演算では 5分以上かかっていた処理が
memcpy に変えるだけで 1〜2秒で終了してしまうほどになったのである。
これは strcatstrncat の結合先の変数: m_XML が数千バイトあると
繰り返し、数千バイトを最後まで loop して読み取っているのではないかと思われる。
そのため処理が非常に遅くなるのである。
ほんの少し意識するだけで劇的な効果をもたらすことができたのである。