8/4(木) 3日目
■ T3-325 Visual C++ 2005 の新機能と既存コードの改善・活用
話の中心は C++/CLI と最適化。
うーん、「IL という中間言語を実行する .NET に比べて C++ は理屈の上でもパフォーマンスが高くなる」ってそれは違うような。JIT が十分に高性能であれば同等になるはずだし、むしろ逆に 「理屈の上では」 実行時に最適化することが可能になるので IL を使ったほうがパフォーマンス的には有利になると思うんだけど (あくまで理屈の上ね)。
へぇ、C++/CLI は Microsoft 固有の構文ではないんだって。。。うーん、こういう説明もありなのかもしれないけど、ちょっと誤解を招きそうな気がするなぁ。確かに ECMA に提出されてるし standard になればオープンなものになるけど、その説明じゃ 「Microsoft 以外の誰かが構文を決めた」 みたいに取られちゃうような。。。
/clr には mixed、pure と verifiable があるのか。この辺の区別とかはよくわかってないなぁ。セッションの内容でも具体的になにが違うのかはよくわからんかった。
えっ、/clr でも cl とリンカを通るんだって。C# で作った .netmodule をリンカでリンクすることが可能なんだ。じゃあ、C# と VB.NET で作った .netmodule をリンカでリンクすることもできるんだ。と思ってたら、そのまんまのことをデモで実演してくれた。
やっぱり、最適化はすごいな。リンカでの最適化って VS.NET2002 からあるのか。けど、2005 でかなり良くなったらしい。Microsoft 社内でも広く使われてるって。
Profile Guided Optimization (ガイド付き最適化) はやっぱりすごいな。30% くらい性能がよくなる? これも Microsoft 社内で広く使われてるらしい。しかし、昨日の夜もこの話題で盛り上がったけど、プロファイルを取った内容で最適化するっていうのは、どんなプロファイルを取るかで最適化の結果が変わることになるから、安定した結果が出るのかどうか不安になるよなぁ。
「プログラム全体にわたる最適化などはコンパイラステップとリンカステップに分かれていることが有利に働いている」 みたいなことを言ってたけどほんとかな?コンパイラとリンカに分かれてることは関係ないように思うんだけど。そもそも、こういう最適化って JIT が内部でやろうとしてるようなことを C++ でもやるようになってきたっていう気がしないでもない。
あと、IDE 上の強化点についての紹介。この辺は C# とか VB.NET とかとまったく同じとのこと。
■ T3-331 セキュアなアプリケーション構築のための Visual Studio 2005 における強化点
なるほどなぁ。「1人の侵入者を防ぐためには 1000人規模で 24時間 365日警備する必要があったりする。それくらいセキュアに保つのは大変」 確かに。「セキュアに保ち続けるというモチベーションの維持が大事。銭形警部のように」 ふむふむ。
静的コード分析が重要、これで一定の品質に保つ。PREfast は C/C++ の静的コード分析ツール。FxCop がマネージド向けの静的コード分析ツール。FxCop でチェックする命名規則などももちろんカスタマイズできる。しかし、非常に難解。
■ お昼ごはん
何人かと近くのレストランで。
■ スペシャルセッション
MVP スペシャルセッションに参加しました。内容は C# とかそういったことです。
そこで出た話なんですが、MSDN Product Feedback なんかを使って、もっともっとフィードバックをして欲しいそうです。フィードバックされた内容をどのように扱っているかをちょっと教えていただけましたが、(詳細は書きませんが)ものすごくちゃんとしていると感じました。ここまでやってくれているんだからフィードバックしないともったいないと思うくらいです(笑)。なにかある人はじゃんじゃんフィードバックしちゃいましょう(ちなみに MSDN Product Feedback はページは英語ですが、日本語で書き込んでも問題ありません)。
■ T2-377 SQL Server 2005 SQL CLR と T-SQL の利用と選択
演算処理などは SQLCLR のほうが T-SQL よりはるかに速い。
SQLCLR はどこで使うべきか?T-SQL が苦手とするような処理、作りにくい処理。まずは拡張ストアドプロシージャは SQLCLR にすべき。そもそも拡張ストアドプロシージャはサポートはされるが推奨はされない機能となった。次にユーザ定義関数。ユーザ定義関数は多くの場合演算処理のために作られるので SQLCLR で書くべき候補となる。テーブル値関数を SQLCLR で実装するとインメモリのストリームになるので速い。T-SQL で実装するとtempdb を使用するのでオーバーヘッドが発生する。反対にデータ処理は向いていない。
へぇ、VS2005 のプロジェクトのプロパティにデータベースなんて項目もあるんだ。
alter table hoge
add hogehoge as hogehoge2 persisted
この persisted も SQL Server 2005 の新機能。計算列の計算結果を保存する。
SQL 型と CTS 型は完全にマップされている訳ではない、最大・最小値が違うなどいろいろある。System.Data.SqlTypes を使ったほうがいい。そして null は IsNull でチェックする。。。そういや、このあたりって nullable が使われるようにはならないのかな?
T-SQL → CLR、CLR → T-SQL ともにアクセス許可セットの影響は受けない。なぜなら T-SQL にアクセス許可セットの考え方自体がないから。しかし、CLR(セーフ)→CLR(セーフ以外)の呼び出しなどをする場合は SecurityException が発生する。では、CLR(セーフ)→ T-SQL → CLR(セーフ以外)とした場合は?これも SecurityException が発生する。正しくアクセス許可セットを設定し、きちんと管理する必要がある。
■ Welcome to INETA Japan Event 2005!
ほんと、おもしろかったです。構成もよくできてたし。お客さんもほとんど満席状態でした。
■ スペシャルナイト(笑) その1
マイクロソフトの方々や MVP の方々などと飲み会。
■ スペシャルナイト(笑) その2
その後、また買い出ししてホテルの部屋で飲み(笑)。けど、途中で寝てた。んだけど、なんか聞くところによると、突然起き上がって 「お開きにしましょう」 とか言ってたらしい。で、お開きになったらしい。覚えてないなぁ(笑)
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。