2026/01/10

コードの最適化

学習している間はある意味暇な訳だけど、そんな時間もあまり無駄にしたくないので年末年始の連休中は「僕のヒーローアカデミア」の一気見とかしました。まあ、それだけではないですが、アプリのコードの見直しってか最適化を少しやったりしてます。

でもね、これ、はっきり言えばMicrosoftのコンパイラがどんだけタコかって話なんだが、40年程前に当時大型汎用機のFORTRANコンパイラの最適化フェーズ担当だったりしたので、こんなのコンパイラが自動で最適化して当然じゃないの?って話なんだが^^;

例えば、C#でSQLiteからデータ取得する際によくやる

kaisaibi = races.GetDateTime("開催年月日");

ですが、これ、実は

int ordKaisaibi = races.GetOrdinal("開催年月日");

としておいて、

kaisaibi = races.GetDateTime(ordKaisaibi);

とした方が、特にループとかで何度もする場合には効率アップになるそうです。ただね、そんなの態々ユーザーが面倒なコード書かなくともコンパイラが判断してやれば良いだけの話。これ以外でも、C#やまあVisual Basicの時にもよく書いた

Moji += "Sample";

って感じのもの。実はこれも数回程度なら問題ないけど、何十回、何百回となると効率が悪いとの事。

var sb = new StringBuilder();
sb.Clear();

といておいて、

sb.Append("Sample");

というのを繰り返す方が効率がいいらしい。で、出来上がった文字列を最終的に

Moji = sb.ToString();

としてやるのが望ましいとの事で、そんなのを試したりしてます。まあ、確かに早くなった気もします(笑) まあね、無料で提供されているVisual Studio communityではこんなもの? じゃあ、有償のProとかだとこんなの普通にコンパイラが最適化してくれてるのかな?

0 件のコメント:

コメントを投稿