-1

私はプロジェクトに取り組んでおり、コードが 3000 行を超え、完了するまでに多くの時間がかかる C プログラムを持っています。より高速な結果を得るには、関数に分割する必要があります。

長い C コードから関数を作成するために使用できる高速な方法や何か、または何らかの方法はありますか? または、すべての機能を手動で実行するコードを実行する必要がありますか?

たとえば、このコードのビットと、それに似たものがたくさんあります。

addr_len = sizeof their_addr;
if ((numbytes = recvfrom(sockfd, ubuf, 6 , 0,(struct sockaddr *)&their_addr, &addr_len)) == -1) 
{
    perror("recvfrom");
    //exit(1);
}

inet_ntop(their_addr.ss_family,get_in_addr((struct sockaddr *)&their_addr),s, sizeof s);

//printf("listener: packet is %d bytes long\n", numbytes);

ubuf[numbytes] = '\0';
printf("listener: packet contains \"%s\"\n", ubuf);
4

2 に答える 2

2

3000 行は多くのコードではありませんが、1 つの関数に対しては多くのコードです。これはおそらくパフォーマンスに影響を与えませんが、読みやすさ/メンテナンスのためにコードを分割し、コードの重複を避ける必要があります。

コードのプロファイルに時間がかかりすぎると思われる場合は、時間がかかっていることを確認しますが、たとえば、投稿した例では、ブロッキング関数になる可能性のある recvfrom を使用していることに注意してください (これは何も問題ありませんが、待機する必要がある場合着信データの場合、プログラムがそのデータが到着するまでに必要なだけ時間がかかることは明らかです)。

于 2013-03-27T09:22:56.543 に答える
2

私の知る限り、これを自動化する方法はありません。これは手動で行う必要があります。

于 2013-03-27T09:17:57.033 に答える