Recently I received a simple task: write a windows service to process user requests. The question of what these requests are and according to what protocol the service works is beyond the scope of this article. Another factor seemed to me more interesting. Is it multi-threaded to do request processing? On the one hand, sequential execution slows down information processing. On the other hand, the costs of creating and launching a stream may not be justified. So, the initial data: 20 simplest requests per second (1200 requests per minute) at peak time. Test "server": Celeron, 3G, 1GB (70% free).
Single threaded system
First, we write a class base for single-threaded query execution.
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
using System; using System.Diagnostics; using System.Threading; namespace TestConsoleApplication { class mockClass { private readonly Int32 incriment_speed; private Int32 inc; public mockClass( int incriment_speed) { this .incriment_speed = incriment_speed; inc = 0; } public Int32 incriment() { Thread.Sleep(incriment_speed); return inc++; } public Int32 getIncriment() { return inc; } } class TestConsoleApplication { static void Main( string [] args) { if (args.Length<1) return ; Int32 mockSpeed = 0; if (! Int32 .TryParse(args[0], out mockSpeed)) return ; var mock = new mockClass(mockSpeed); int beginTick = Environment.TickCount; for ( int j = 0; j < 1200; j++) { mock.incriment(); } int endTick = Environment.TickCount; var performance = new PerformanceCounter( "Process" , "Private Bytes" , Process.GetCurrentProcess().ProcessName); Console .WriteLine(mock.getIncriment()); Console .WriteLine( "tick: {0}" , endTick - beginTick); Console .WriteLine( "memory: {0:N0}K" , (performance.RawValue/1024)); Console .ReadLine(); } } } * This source code was highlighted with Source Code Highlighter .
Run the program with several parameters for delaying the request: 2, 5, 10
2
five
ten
tick
memory
tick
memory
tick
memory
3688
10 792K
7281
10 780K
13125
10 792K
As you can see, the memory practically does not suffer, and the time is approximately equal to (mockSpeed + 1) * 1200. An extra millisecond will be written off for overhead.
Multithreaded system
Let's rewrite the program for working with multithreading, optimize it and check the results:
using System;
using System.Diagnostics;
using System.Threading;
namespace TestConsoleApplication
{
class mockClass
{
private readonly Int32 incriment_speed;
private Int32 inc;
public mockClass ( int incriment_speed)
{
this .incriment_speed = incriment_speed;
inc = 0;
}
public Int32 incriment ()
{
Thread.Sleep (incriment_speed);
return inc ++;
}
public Int32 getIncriment ()
{
return inc;
}
}
class TestConsoleApplication
{
private static mockClass mock = null ;
static void threadmethod ()
{
lock (mock)
{
mock.incriment ();
}
}
static void Main ( string [] args)
{
if (args.Length <1) return ;
Int32 mockSpeed = 0;
if (! Int32 .TryParse (args [0], out mockSpeed)) return ;
mock = new mockClass (mockSpeed);
var performance = new PerformanceCounter ( "Process" , "Private Bytes" , Process.GetCurrentProcess (). ProcessName);
long performance_RawValue = 0;
int beginTick = Environment.TickCount;
lock (mock)
{
for ( int j = 0; j <1200; j ++)
{
var trd = new thread (threadmethod, 65536); // select 1 page per stack
* This source code was highlighted with Source Code Highlighter .
-
2
five
ten
-
start tick
all tick
memory
start tick
all tick
memory
start tick
all tick
memory
Single threaded
-
3688
10 792K
-
7281
10 780K
-
13125
10 792K
Multithreaded
656
4234
323 508K
625
7719
323 508K
750
13735
323 508K
When testing the performance of multithreading, a new value of the start time of processes appeared. It is this value that the total duration of the program runs. The approximate process start is 0.5 millisecond. We also see a significantly increased amount of used memory that is spent on the stack of the threads being run. ')
Results
Select all compared values in the table.
-
Single threaded
Multithreaded
Total time
The total time of the main thread depends on the execution time of all requests.
The time of the main thread depends only on the number of requests.
Total CPU Time
Low parasitic loads
Parasitic loads 2 times higher
Memory
Low memory queries, independent of the number of requests
Each request consumes at least 256KB of memory per thread stack.
Such a “student laboratory work” came out in the study of this issue. Please do not throw stones :)