Archive for the ‘Windows’ Category
DevSumi2012 OpenJam codeseek – Metro アプリ
Developers Summit 2012 にて、codeseek 枠で OpenJam セッションしてきました。
事前告知すっかり忘れていて、当日、直前くらいに twitter でつぶやいた程度、本セッションがたくさんある裏でのセッションだったわけですが。その割に、常時20名超、延べだと40名程度お越しいただけたようです。ありがとうございました。
OpenJam 運営の方の手により、録画&YouTube 公開されています。
スライドも、SkyDrive にアップロードしました。
https://skydrive.live.com/#!/view.aspx?cid=5C622397E11C979D&resid=5C622397E11C979D%214035
ちなみに、「100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊」にも寄稿していたりします。ほんとに名著が並ぶ中、自著(を書くにあたって込めた思いをつづっただけ)だったりしますが…
非同期処理で UI 改善
Bulding Windows 8 ブログ、日本語化されてたのね。しかも、日本語訳が機械翻訳じゃないっぽい。予算ついてるなぁ、さすがに。
さて、上記エントリーだと、ファイル管理機能の更新点が出てるわけですが。開発者視点で見ると、思いっきり非同期処理で大変そう。数年前から着々とやってきた、非同期 API の整備のたまものですかねぇ。
この手の処理は元々非同期なわけですが、きっと今までは、非同期処理の正しい書き方が面倒、テスト工数的に困難などなどあって、実装をあきらめるなり、不用意に性能落とすようなコードになってたんじゃないかとか考えられるわけです。
非同期処理 API の整備
非同期がらみのここ数年の動きを振り返ってみると、
- 2008~9年:
- Windows Server 2008 R2、Windows 7 の64ビット版に User-Mode Scheduling (UMS) 搭載
- 2010年:
- ネイティブ向けには同時実行ランタイム(Concurrency Runtime、ConcRT)
- .NET 向けにはタスク並列ライブラリ(Task Parallel Library、TPL)
というようなものが。
UMS、ConcRT、TPL
ちなみに、これらはどれも、基本的には、
- むやみに新規スレッドを立てない
- 可能な限りユーザー モードのままで動く
というのを徹底しています。
UMS は、アプリケーションが自身の裁量でスレッドのスケジューリングを行えるようにして、システム スケジューラー(カーネル モードへの移行が必要)の稼働を減らす仕組み。
ConcRT と TPL は、ワーク スティーリング(work-stealing)アルゴリズム(低ロックなキューを使って効率的にタスク実行するしくみ)で、可能な限りスレッド切り替えや、カーネル モード移行をなくして協調的マルチタスクを行うライブラリ。
そして来年
そして、Windows 8 をはじめ、Microsoft 製品で来年くらい出荷のものから、非同期処理による性能や操作性の改善が入っていくのではないかと。バックグラウンド処理するのでフリーズが減ったり、スケジューリングが賢くなってるので大量のジョブを一気にやっても性能落ちなかったり。
なんかこう、OS の基本機能実装 → ライブラリ整備 → UI 層に反映という流れが実に4年くらいかけて行われているわけで。長い道のりよなぁ。