strcpyをmemcpyに – プログラミング – Home

通知
すべてクリア

[解決済] strcpyをmemcpyに


ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
Topic starter  

strcpyは遅いそうなのでmemcpyに変更しようと思うのですが、
文字列の長さを取得する為にstrlenを使用してしまいます。

この場合、strcpyで行った場合より速くなるのでしょうか?


 char* str = 遅いです;
 strcpy(strBuff, str);
 memcpy(strBuff, str, strlen(str));

体感できるものではないのですが、できるだけよい物にしたいので。

よろしくお願いします


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

おそらくほとんど差がないと思う。
どっちにせよ末尾'\0'を見つける作業を伴うのだから。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

あれ?・・・1文字分足りなくありません?

ってそういう問題じゃないね。


返信引用
ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
Topic starter  

こんな質問に回答いただきありがとう御座います。

>どっちにせよ末尾'\0'を見つける作業を伴うのだから。

っそうですね!ってはstrcpyのほうがシンプルなのでこのままにします。

ありがとう御座いました


返信引用
HEARTS
 HEARTS
(@HEARTS)
ゲスト
結合: 23年前
投稿: 21
 

暇人ですいません。
実際に10億回ループで
まわして試してみました。
結果は
 strcpy(strBuff, str);         10秒ちょっと
 memcpy(strBuff, str, strlen(str));   20秒ちょっと
でした(ああ、アバウトですいません)。

もちろん、完全に同じ状態で実行する
っていうのはきっとありえないので
参考値でしかありませんが。

以上、実験報告でしたー


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

余計に遅いぢゃん ^^;

strlen(str) を定数にすれば関数呼び出しがなくなってちょびっと速くなるかも。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> strlen(str) を定数にすれば関数呼び出しがなくなってちょびっと速くなるかも。
それでは趣旨が違ってくるのでは?

どっちにしろ標準関数を使ったほうが「より良いもの」である場合が多いでしょう。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

>> strlen(str) を定数にすれば関数呼び出しがなくなってちょびっと速くなるかも。
> それでは趣旨が違ってくるのでは?

百も承知二百も合点です ^^;


返信引用
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
 

すでに終わった話題ぽいですが…
strcpy って、確か x86 のストリング命令とか、文字列操作に特化した命令を使ってる
んで速いって聞いたような記憶が。
違ってたらゴメンナサイネ


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました