
パフォーマンス最適化
Profiling、BenchmarkDotNet、memory allocation、boxing/unboxing、Span<T>、パフォーマンスのベストプラクティス
22 面接問題·
Senior
1パフォーマンスを測定する際、単純なStopwatchに対するBenchmarkDotNetの主な利点は何ですか?
1
パフォーマンスを測定する際、単純なStopwatchに対するBenchmarkDotNetの主な利点は何ですか?
回答
BenchmarkDotNetはwarm-upを実行し、統計的安定化を伴う複数のイテレーションを測定し、JITとGCのバイアスを回避します。単純なStopwatchはこれらの要因を制御しないため、代表的でない結果を出すことがあります。BenchmarkDotNetは操作ごとのメモリ割り当てなどの詳細なメトリクスも提供します。
2本番環境でメモリ割り当てを分析しメモリリークを特定するために推奨されるMicrosoftのツールはどれですか?
2
本番環境でメモリ割り当てを分析しメモリリークを特定するために推奨されるMicrosoftのツールはどれですか?
回答
JetBrainsのdotMemoryとMicrosoftのPerfViewは.NETでメモリをプロファイリングするための推奨ツールです。PerfViewは無料でオープンソースであり、heap allocations、stack traces、GCイベントを分析できます。大きなオーバーヘッドなしに本番環境でメモリリークを診断するのに特に適しています。
3FirstOrDefault()のようなLINQメソッドの隠れたメモリ割り当てをどのように特定しますか?
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面接トピック
C# の基礎
Junior
25問LINQ & Delegates
Junior
20問C#言語の基礎
Junior
15問ASP.NET Core の基礎
Junior
18問ASP.NET Core のリクエストライフサイクル
Junior
20問Configuration & Settings
Junior
20問アプリケーションのライフサイクル
Junior
20問Dependency Injection
Mid-Level
24問Entity Framework Core
Mid-Level
25問Minimal APIs
Mid-Level
18問Web API開発
Mid-Level
22問ASP.NET Core における Async
Mid-Level
20問Authentication & Authorization
Mid-Level
18問HttpClient & ネットワーキング
Mid-Level
20問JSONシリアライズ
Mid-Level
20問Entity Framework Core 応用
Mid-Level
25問C# の高度な機能
Mid-Level
20問Clean Architecture
Mid-Level
20問Logging, Monitoring & Observability
Mid-Level
22問ユニットテストとxUnit
Mid-Level
20問統合テスト
Mid-Level
18問Docker & Containerization
Mid-Level
16問NuGet パッケージ管理
Mid-Level
16問Memory Management & GC
Senior
22問リアクティブプログラミング
Senior
24問Async/await とパターン
Senior
26問.NET デザインパターン
Senior
24問セキュリティとベストプラクティス
Senior
24問SignalR とリアルタイム
Senior
22問マイクロサービスアーキテクチャ
Senior
25問