static void Main (string[] args)
{
var src_bitmap = new System.Drawing.Bitmap (@"C:\Users\Jonathan\Desktop\helo.png");
var dst_bitmap = new System.Drawing.Bitmap (src_bitmap.Width, src_bitmap.Height);
Console.WriteLine ("Image Size: {0}x{1}", src_bitmap.Width, src_bitmap.Height);
Console.WriteLine ("-------------------------------");
var src_wrap = new BitmapWrapper (src_bitmap);
var dst_wrap = new BitmapWrapper (dst_bitmap);
src_wrap.BeginUpdate ();
dst_wrap.BeginUpdate ();
int runs = 1;
foreach (var effect in GetEffects ()) {
Settings.SingleThreaded = false;
// Run once to ensure effect is jitted
effect.Render (src_wrap, dst_wrap);
var sw = new Stopwatch ();
sw.Start ();
for (int i = 0; i < runs; i++) {
var tcs = new CancellationTokenSource ();
var t = effect.RenderAsync (src_wrap, dst_wrap, tcs.Token);
//tcs.Cancel ();
t.Wait ();
}
var multi = sw.ElapsedMilliseconds / runs;
Settings.SingleThreaded = true;
sw.Restart ();
for (int i = 0; i < runs; i++) {
var tcs = new CancellationTokenSource ();
var t = effect.RenderAsync (src_wrap, dst_wrap, tcs.Token);
//tcs.Cancel ();
t.Wait ();
}
var single = sw.ElapsedMilliseconds / runs;
Console.WriteLine (" {2} {0} | {1} | {3}", (single.ToString () + "ms").PadRight (7), (multi.ToString () + "ms").PadRight (7), (effect.GetType ().Name + ":").PadRight (30), true);// (single / multi) >= 2);
}
src_wrap.EndUpdate ();
dst_wrap.EndUpdate ();
//dst_bitmap.Save (@"C:\Users\Jonathan\Desktop\helo2.png");
Console.WriteLine ();
Console.WriteLine ("Finished");
Console.ReadLine ();
}