strcpyは遅いそうなのでmemcpyに変更しようと思うのですが、
文字列の長さを取得する為にstrlenを使用してしまいます。
この場合、strcpyで行った場合より速くなるのでしょうか?
例
char* str = 遅いです;
strcpy(strBuff, str);
memcpy(strBuff, str, strlen(str));
体感できるものではないのですが、できるだけよい物にしたいので。
よろしくお願いします
おそらくほとんど差がないと思う。
どっちにせよ末尾'\0'を見つける作業を伴うのだから。
あれ?・・・1文字分足りなくありません?
ってそういう問題じゃないね。
こんな質問に回答いただきありがとう御座います。
>どっちにせよ末尾'\0'を見つける作業を伴うのだから。
っそうですね!ってはstrcpyのほうがシンプルなのでこのままにします。
ありがとう御座いました
暇人ですいません。
実際に10億回ループで
まわして試してみました。
結果は
strcpy(strBuff, str); 10秒ちょっと
memcpy(strBuff, str, strlen(str)); 20秒ちょっと
でした(ああ、アバウトですいません)。
もちろん、完全に同じ状態で実行する
っていうのはきっとありえないので
参考値でしかありませんが。
以上、実験報告でしたー
余計に遅いぢゃん ^^;
strlen(str) を定数にすれば関数呼び出しがなくなってちょびっと速くなるかも。
> strlen(str) を定数にすれば関数呼び出しがなくなってちょびっと速くなるかも。
それでは趣旨が違ってくるのでは?
どっちにしろ標準関数を使ったほうが「より良いもの」である場合が多いでしょう。
>> strlen(str) を定数にすれば関数呼び出しがなくなってちょびっと速くなるかも。
> それでは趣旨が違ってくるのでは?
百も承知二百も合点です ^^;
すでに終わった話題ぽいですが…
strcpy って、確か x86 のストリング命令とか、文字列操作に特化した命令を使ってる
んで速いって聞いたような記憶が。
違ってたらゴメンナサイネ