2016年05月10日

ボックス化とボックス化解除とそのコスト

概要 値型もObject型から派生しているのでObject型に変換することが出来る。値型を参照型であるObject型(またはインタフェース)に変換することをボックス化、ボックス化されているのを値型に戻すことをボックス化解除またはアンボックス化という。

 // ボックス化
 int n = 10;
 object obj = n;

 // アンボックス化
 int m = (int)obj;


このボックス化やボックス化解除はコストが重いらしい。MSDNのこのページから引用。

簡単な代入と比べて、ボックス化およびボックス化解除は負荷の大きいプロセスです。 値型をボックス化するときは、新しいオブジェクトを割り当てて構築する必要があります。 ボックス化ほどではありませんが、ボックス化解除に必要なキャストも大きな負荷がかかります。

同様の記載はいろんな解説ページなどにあるんですが、どの程度影響があるんでしょうか。測ってみます。 ついでにDynamicも合わせて計測します。こんなコードです。

            List<int> list = Enumerable.Range(1, 1000000).ToList();

            var sw = new Stopwatch();
            int sum = 0;
            sw.Start();

            foreach (int val in list)
                sum += val;

            sw.Stop();
            var em1 = sw.ElapsedMilliseconds;
            sum = 0;

            sw.Restart();

            foreach (object val in list) // ここでボックス化
                sum += (int)val;         // ここでボックス化解除

            sw.Stop();
            var em2 = sw.ElapsedMilliseconds;
            sum = 0;

            sw.Restart();

            foreach (dynamic val in list)
                sum += val;

            sw.Stop();
            var em3 = sw.ElapsedMilliseconds;


計測結果は以下のような感じ。
初回   4,20,40(ms)
2回以降 4,10,20(ms)

ボックス化なしに対し、ボックス化&ボックス化解除が介在すると2倍強、Dynamicでは5倍程度遅いです。 但し、100万回づつ廻してますが一桁おとして10万回程度だとほとんど差はなくなります。

これを「パフォーマンスに大きな影響がでる」というのかは使用箇所によるでしょう。数千回ぐらいならほぼ計測誤差ぐらいなので予想ほどでもありませんでした。
posted by RR at 01:01 | Comment(0) | 文法 | このブログの読者になる | 更新情報をチェックする

2016年05月17日

MCP マイクロソフト認定資格試験 新しくなったらしい

MCPというのはマイクロソフト社によるベンダー試験です。

ポータルはこちら https://www.microsoft.com/ja-jp/learning/default.aspx

このサイトにたどり着くような方が関係する開発者向けの資格MCSDのポータルはこちら↓
 https://www.microsoft.com/ja-jp/learning/mcsd-certification.aspx

オラクルとかJAVAと比べると知名度などは格段に落ちるので、折角取得してもあまり評価してもらえない場合も多い。
特典もあまりなくて、左上のロゴが使えるぐらい。オマジナイにもならない。

取得したのもかなり前になりますが、そんな運用されているマイクロソフトからはじめてメールが来ました。
特典が変ったそうです。曰く「プロフィールを登録するとSNS等で簡単に使える・求人情報に無料でアクセスできる(※日本は対象外!!)・MSの本が安く買えますよ」とのこと。

ふむ。。なんだかな。

取得学習に関しては無料の動画講座が以下で見られるとのこと。これまでは試験範囲以外の情報がほとんどなかっただけに貴重なんだけれど日本語版はないみたい。

https://channel9.msdn.com/Blogs/mcpexamprep

受験料はかなり高額ですが、興味ある方や会社等で受験料とか報奨金とかでる方は挑戦する意義あるか、も。

MSとしては、開発者なら資格認定しといた方が良いよって言ってます。

https://borntolearn.mslearn.net/b/weblog/archive/2013/06/18/the-real-reason-developers-should-get-certified?Redirected=true

それなら、もう少しマシな試験運用にすればいいのに、なんて思います
posted by RR at 01:24 | Comment(0) | 規約・参考サイト | このブログの読者になる | 更新情報をチェックする

2016年05月21日

Visual Studio 2015 Community版のダウンロードとインストール

C#等の.NET系開発には欠かせない統合開発環境であるVisual Studioの最新版であるVisual Studio 2015にはCommunity版というプロフェッショナル版に匹敵する機能が無償で公開されています。

以下のページから入手可能です。

https://www.visualstudio.com/ja-jp/products/visual-studio-community-vs.aspx

こんなページです。

VS2015CommunityPage.png

画面中央の緑のボタン(「Coummunity 2015のダウンロード」と書いてあります)を押下するとインストーラをダウンロードできます。

これでダウンロードされるインストーラファイルは「vs_community_JPN.exe」というものでサイズは207KBなのであっという間に終わります。

これを起動すると画面が立ち上がりますので指示通り(デフォルトでOK)OKしていくと本体モジュールのダウンロードとインストールが始まります。

ネットワークの環境等によりますが一時間程度はかかるのと、インストール後に再起動が必要になります。

なお、このインストーラによると日本語版がインストールされるので、別途日本語用言語パックの適用は不要となっています。
posted by RR at 08:45 | Comment(0) | 開発環境 | このブログの読者になる | 更新情報をチェックする