本日もフラフラとネット上を散策していると、かなり興味深い記事にぶち当たったのでメモ。

「Windows7にネイティブで対応」と「Windows7でも作動する」ではかなりアプリの作動がかなり違うっぽいです。

上記リンクに書かれている内容のキモは
「Windows7は、そのアプリケーションに埋め込まれているアプリケーションマニフェスト内にWindows7対応が明記されていない限り下位互換性を保つ為にWindowsVista互換モードでそのアプリを起動する」という部分。

実際、FirefoxをWindows7ネイティブ化してビルドした所、随分と快適になったらしいです。
(リンク先が楽天iswebなので消えてます。)

以下、「Windows7ネイティブアプリ」より転載。
「ネイティブ」と「互換」の場合で作動はこんな感じに違って来る。

■RPC Default Thread Pool
ネイティブ: RPC が NT スレッドプールを使う
互換: RPC がプライベートスレッドプールを使う

■DirectDraw Lock
詳細は分からないけど、DirectDrawのLockメソッドは使うと相当遅くなるらしい。それを使わないで処理を巧い事やってくれる様になる。
ネイティブ: DDARW のビデオバッファをロックできない
互換: DDARW のビデオバッファをロックできる

■DirectDraw Bit Block Transfer (Blt) to Primary without Clipping Window
詳細は分からないけど、アプリケーションが動いてるWindowがちらつかなくなって、スムーズに移動出来る様になる。
ネイティブ: クリッピングウィンドウ無しで Blt エリアに描画ができる
互換: Desktop Window Manager に従い、描画する

■GetOverlappedResult API
複数スレッドが非同期処理を行っている際、このメソッドを使用してその状態を追跡した時の動作が異なる。互換モードだと取違いが発生する可能性がある。
ネイティブ: マルチスレッドで使用した場合の競合を解決する
互換: マルチスレッドで使用した場合、タイミングによっては期待した結果が得られない

■Program Compatibility Assistant (PCA)
互換性担保の為の各種プログラムが動作するか否か。動けば当然処理が増えるしアプリケーションも監視されるので処理が遅れる
ネイティブ: PCA を使わない
互換: PCA を使う

 

アプリ側でキチンとWindows7に対応した設計になっていると、様々なツールがかなり高速化するっぽい。 

「昔のアプリがWindows7上でも作動する」 ってのと 「アプリがWindows7に対応している」ってのは、OS側から見ると全然別物らしいってのが良く分かります。
Windows7を使うようになっても古いツールを愛用している方は、機会を見つけて新しいバージョンに差し替えてみるとビックリする位快適になるかも知れませんね。