SHOW:
|
|
- or go back to the newest paste.
| 1 | using System; | |
| 2 | using System.Diagnostics; | |
| 3 | ||
| 4 | - | namespace PerfTestCSharp {
|
| 4 | + | namespace NumericPerfTestCSharp {
|
| 5 | class Program {
| |
| 6 | static void Main() {
| |
| 7 | var collection = new int[100000000]; | |
| 8 | ||
| 9 | Benchmark(() => SumForEach(collection), "SumForEach"); | |
| 10 | Benchmark(() => SumFor(collection), "SumFor"); | |
| 11 | ||
| 12 | } | |
| 13 | static long SumForEach(int[] collection) {
| |
| 14 | long sum = 0; | |
| 15 | foreach (var i in collection) {
| |
| 16 | sum += i; | |
| 17 | } | |
| 18 | return sum; | |
| 19 | } | |
| 20 | ||
| 21 | static long SumFor(int[] collection) {
| |
| 22 | long sum = 0; | |
| 23 | for (int i = 0; i < collection.Length; ++i) {
| |
| 24 | sum += collection[i]; | |
| 25 | } | |
| 26 | return sum; | |
| 27 | } | |
| 28 | ||
| 29 | static void Benchmark<T>(Func<T> func, string message) {
| |
| 30 | // warm-up call | |
| 31 | func(); | |
| 32 | ||
| 33 | var sw = new Stopwatch(); | |
| 34 | - | var sw = Stopwatch.StartNew(); |
| 34 | + | |
| 35 | sw.Start(); | |
| 36 | var res = func(); | |
| 37 | sw.Stop(); | |
| 38 | // Write result just to prevent the compiler from optimising away the method call | |
| 39 | Console.Write(res); | |
| 40 | } | |
| 41 | Console.Write('\n');
| |
| 42 | Console.WriteLine(message + " : {0} ms", sw.ElapsedMilliseconds);
| |
| 43 | } | |
| 44 | } | |
| 45 | } |