« 新規 Weblog "Gurhal Dialy" を仮運用開始 | メイン | ARIB STD-B25 準拠デスクランブラが公開される »

.NET Framework におけるボックス化

.NET Framework における比較的特徴的な動作としてボックス化が挙げられます。これは、Java でもそうですが値型と参照型という根本的に異なる型が存在するためです。参照型が値そのものは変数そのものとは独立した場所にあるのに対し、値型は変数内に値そのものがあります。ただ言うまでもなく、値型を参照型に型変換する必要が生じます。そのため、.NET Framework の場合は自動ボックス化が働き、ヒープ上に領域を確保し、そこにデータをコピーするという動作が働きます。しかし、これがループ内などで頻繁に起きたりするとパフォーマンスにネガティブな影響を与えます。Java も 1.5 系列からは自動ボックス化が導入されているのでその辺に注意が要るかなと思います。

で、そういった背景から Box 化確認ツールがいくつか作られているようです。一つは当面 C# と .NET な記録の2006/11/8 のエントリです。これは 1 年くらい前のアーティクルです。それ以外にも最近だと NyaRuRu の日記の "boxing チェッカー"なんかもあります。ポイントは同じで基本的には隠れたボックス化を見つけだすことにあります。ボックス化に関する警鐘はこの記事では Jeffery Richter に書かれているとあるので恐らく、プログラミング Microsoft .NET Framework のことでしょう。欲しい本なんですけど、ちょっと値が張るんですよね。

まあ、NyaRuRu さんのアーティクルは XNA のタグが振られておりターゲットに XNA Framework が入っているのでボックス化のもたらすパフォーマンスの悪化は非常に大きなポイントでしょう。もちろん、ボックス化そのものは非常に便利な機能です。これのおかげで値型と参照型を区別せずに扱えるという強力なベネフィットがありますから。ただ、根本的に違う型ですから便利さにかまけているとその暗黒面に足を取られるということです。

プログラミングMicrosoft .NET Framework 第2版 (マイクロソフト公式解説書) プログラミングMicrosoft .NET Framework 第2版 (マイクロソフト公式解説書)
ジェフリー リッチャー Jeffrey Richter 吉松 史彰

日経BPソフトプレス 2006-12
売り上げランキング : 65445

Amazonで詳しく見る
by G-Tools
Technorati のタグ:
このエントリーをはてなブックマークに追加 Save This Page to del.icio.us このエントリーをlivedoorクリップに追加 このエントリーをニフティクリップに追加 このエントリーをBuzzurlに追加このエントリーをBuzzurlに追加 このエントリーをFC2ブックマークへ追加 このエントリーをnewsingへ追加 このエントリーをYahoo!ブックマークに追加

トラックバック

このエントリーのトラックバックURL:
http://www.cworld2000.com/cgi-bin/mt/mt-tb.cgi/370

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年11月26日 17:02に投稿されたエントリーのページです。

ひとつ前の投稿は「新規 Weblog "Gurhal Dialy" を仮運用開始」です。

次の投稿は「ARIB STD-B25 準拠デスクランブラが公開される」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

検索

この Weblog について

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type 3.35