タグ

C#とNative Cに関するni66lingのブックマーク (3)

  • C# Parallel.For + Native C による高速化~その3:並列画像処理

    C# Parallel.For + Native C による高速化~その3:並列画像処理 準備ができたところで、C# と C# + Native Cでの画像処理でどのぐらい差が出るのか試してみます。 対象は、1つの画像に対して、ラプラシアンフィルターを適用するという、簡単な画像処理です。ラプラシアンフィルタとは空間2次微分を計算し、輪郭を検出するフィルタです。 ここでは、次のような 3x3 の8近傍フィルターを使います。 画像の取得と表示部分 画像の取得と表示部分は、C# の得意とする部分なので、特に困ることはないと思います。 WPFで、次のような画面をデザインします。 <Window x:Class="WritableBitmap.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x

  • C# + Native C による高速化~その2: タスク並列ライブラリ

    タスク並列ライブラリ(Task Parallel Library)の略。.NET Framework Version 4 の System.Threading 名前空間および System.Threading.Tasks 名前空間のAPI のセット。 タスク並列ライブラリ~データの並列処理: Parallel.ForEach 複数のデータに対して、次のようにforeach で処理を行うことができます。これは、シーケンシャル(順次処理)となります。 foreach (var item in sourceCollection) { Process(item); } この時 Process(item) が item に対して完全に独立している場合、Parallel.Foreach により、並列処理が可能になります。 Parallel.ForEach(sourceCollection, item

  • C# + Native C による高速化~その1:基礎知識と準備

    C# + Native C による高速化~その1:基礎知識と準備 最近は、プロセッサのクロック自体が高速になっており、通常のアプリケーションであれば、性能について特に気にする必要もなくなりつつあります。しかし、画像や音声やビデオのような大量のデータや、複雑な算術計算を実施する場合は、どうしてももっと高速に処理したいという場合が出てきます。 一方で、ハードウェアの性能向上により、4 Core, 8 Thread などのマルチコアプロセッサがコンシューマ向けに安価に発売されており、いわゆるメニーコアの環境が整いつつあります。また、Intel Sandy Bridge 世代以降では、Intel Advanced Vector Extensions (AVX)が追加されました。これにより、SSEに加え、256bit命令拡張が行われ、ますますハードウェアの性能が向上しています。 このような並列化、メ

  • 1