アカウント名:
パスワード:
>strcpy(dst + a + b + c, src); // 意図はstrcat(dst, src); ここまでの処理でstrlen(dst) == a + b + cなのでこの程度の最適化はコンパイラに任せるべきだと思うし、コメントよりもconst int offset_ここまでの処理でずれたと言うことがわかる名前 = a + b + c;strcpy(dst + offset_ここまでの処理でずれたと言うことがわかる名前, src);
とかするとソースコードが意図を見せてくれると思うのだけどそういうのじゃだめなの?
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond
良い言い訳 (スコア:1)
出来る限りの最適化を加えてた結果としてどうしょうもなく読みにくくなって、それを緩和すべくくどい説明を添えることぐらいは許してください。
単純なところでは、
strcpy(dst + a + b + c, src); // 意図はstrcat(dst, src); ここまでの処理でstrlen(dst) == a + b + cなので
みたいな、(この例だと変数名が最悪なのは置いといて)分かってる値を使い回してステップ数を減らすところから、もっと凝りに凝った最適化まで。
ぱっと見て何が書いてあるのか分からない、
Re: (スコア:1, すばらしい洞察)
>strcpy(dst + a + b + c, src); // 意図はstrcat(dst, src); ここまでの処理でstrlen(dst) == a + b + cなので
この程度の最適化はコンパイラに任せるべきだと思うし、コメントよりも
const int offset_ここまでの処理でずれたと言うことがわかる名前 = a + b + c;
strcpy(dst + offset_ここまでの処理でずれたと言うことがわかる名前, src);
とかするとソースコードが意図を見せてくれると思うのだけどそういうのじゃだめなの?
Re:良い言い訳 (スコア:0)
こっちは複雑な処理だからシンプルで直感的なコード書きてーんだ、
なに? この程度のforループの最適化もしてくんないの?
え? このforループ一個だけで処理速度全体が1/3になった?
キャッシュのヒット率か?
しょーがねーから膨大なプロジェクト全体のfor文全部見直し、
マジっすか?? 何個あんの??
パフォーマンスが出ねーんだよしょーがねー!!!
という修羅場(全部実話)の後のコードは、コメント無しじゃどうしようもない。
残念ながらいつもコンパイラが最適化やってくれるとは限らないっす。