はじめまして!現在DxLibを使わせていただき、通信系の関数を使用してTCP/IPで通信を行うアプリを製作しているのですが。。。。どうもテスト起動する度にCPUの使用率&メモリ使用率が跳ね上がってしまいます。無駄な処理が沢山ありメモリを無駄に使ってしまっていることは百も承知です><
プログラミング暦はないに等しいのですが。 この問題を解決しようとまずポインタを使った徹底したメモリ管理。分岐命令を多様した処理を施して再度作り直しました、が思うような結果がでません。
私が思うところ、Dxライブラリの関数(通信系にかかわらず)がプログラム全体の処理を重くしている原因かと・・・それか私のループ処理の組み方に問題があるのかもしれないです。
主にメインループは while(!ProcessMessage()){ } で中の処理を回しています。このループをネストしている部分も多々あります><
>>長々となりましたが私が聞きたいのは!どのようにすれば効率のいい処理が実現するのでしょう?です。みなさんのアドバイスお持ちしてます>< (開発言語はC言語 コンパイラはビジュアル2008です)
処理効率について
Re:処理効率について
ループが全速力で回ってますね
実行に差し支えがなければ
while(!ProcessMessage())
{
//処理
Sleep(1);
}
のようにループの最後にSleep入れたら使用率は下がりますよ
実行に差し支えがなければ
while(!ProcessMessage())
{
//処理
Sleep(1);
}
のようにループの最後にSleep入れたら使用率は下がりますよ
Re:処理効率について
>>toyoさん
アドバイスありがとうございます。Sleep関数は既に組みこんであります、メモリリークの可能性はありませんでした。
ほかに処理を重くしている原因があるとすればなにがあるんでしょう…プログラムの処理手順などで質問がありましたらお聞きします(゜Д゜)
アドバイスありがとうございます。Sleep関数は既に組みこんであります、メモリリークの可能性はありませんでした。
ほかに処理を重くしている原因があるとすればなにがあるんでしょう…プログラムの処理手順などで質問がありましたらお聞きします(゜Д゜)
Re:処理効率について
while(!ProcessMessage()){
if(buff_flg(nethandle)==1){
dtout(nethandle); //ファイルを受信し配列に格納
outfile(file_pt); //格納先の配列をファイル出力
}else{
lostcn=GetLostNetWork(); //相手の切断確認
if(lostcn==cn){
ClearDrawScreen();
break;
}
}
}
>>ざっとこんなメインループです。それぞれ関数がありますが気にしないでくださいw 相手からの接続を待ち受けて(サーバー機能)接続あれば以下の処理をする。という感じです 主な使用関数は GetNewAcceptNetWork(); GetNetWorkDataLength(); NetWorkRecv(); です。
if(buff_flg(nethandle)==1){
dtout(nethandle); //ファイルを受信し配列に格納
outfile(file_pt); //格納先の配列をファイル出力
}else{
lostcn=GetLostNetWork(); //相手の切断確認
if(lostcn==cn){
ClearDrawScreen();
break;
}
}
}
>>ざっとこんなメインループです。それぞれ関数がありますが気にしないでくださいw 相手からの接続を待ち受けて(サーバー機能)接続あれば以下の処理をする。という感じです 主な使用関数は GetNewAcceptNetWork(); GetNetWorkDataLength(); NetWorkRecv(); です。