.NET

パフォーマンス最適化

Profiling、BenchmarkDotNet、memory allocation、boxing/unboxing、Span<T>、パフォーマンスのベストプラクティス

22 面接問題·
Senior
1

パフォーマンスを測定する際、単純なStopwatchに対するBenchmarkDotNetの主な利点は何ですか?

回答

BenchmarkDotNetはwarm-upを実行し、統計的安定化を伴う複数のイテレーションを測定し、JITとGCのバイアスを回避します。単純なStopwatchはこれらの要因を制御しないため、代表的でない結果を出すことがあります。BenchmarkDotNetは操作ごとのメモリ割り当てなどの詳細なメトリクスも提供します。

2

本番環境でメモリ割り当てを分析しメモリリークを特定するために推奨されるMicrosoftのツールはどれですか?

回答

JetBrainsのdotMemoryとMicrosoftのPerfViewは.NETでメモリをプロファイリングするための推奨ツールです。PerfViewは無料でオープンソースであり、heap allocations、stack traces、GCイベントを分析できます。大きなオーバーヘッドなしに本番環境でメモリリークを診断するのに特に適しています。

3

FirstOrDefault()のようなLINQメソッドの隠れたメモリ割り当てをどのように特定しますか?

回答

MemoryDiagnoser属性付きのBenchmarkDotNetを使うと、操作ごとの割り当てを確認できます。LINQのlambdaはdelegate経由で隠れた割り当てを作成します。単純なforeachループに置き換えるとこれらの割り当てがなくなります。PerfViewは割り当てのstack tracesを捕捉してソースを特定することもできます。

4

BenchmarkDotNetで、CPUパフォーマンスを測定しコードのhotspotを特定するためにどの属性を使いますか?

5

Mean: 125.3 ns、StdDev: 45.2 nsを示すBenchmarkDotNetの結果をどのように解釈しますか?

+19 面接問題

次の面接に向けて.NETをマスター

すべての問題、flashcards、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める