--- /dev/null
+using System;
+
+public class ValueType1
+{
+ static int Main ()
+ {
+ Blah a = new Blah ("abc", 1);
+ Blah b = new Blah ("ab" + 'c', 1);
+ long start, end;
+ start = Environment.TickCount;
+
+ start = Environment.TickCount;
+ for (int i = 0; i < 1000000; i++)
+ a.GetHashCode ();
+ end = Environment.TickCount;
+ Console.WriteLine ("struct common GetHashCode(): {0}", end-start);
+
+ start = Environment.TickCount;
+ for (int i = 0; i < 1000000; i++)
+ a.Equals (b);
+ end = Environment.TickCount;
+ Console.WriteLine ("struct common Equals(): {0}", end-start);
+
+ Blah2 a2 = new Blah2 ("abc", 1);
+ Blah2 b2 = new Blah2 ("abc", 1);
+ start = Environment.TickCount;
+ for (int i = 0; i < 1000000; i++)
+ a2.GetHashCode ();
+ end = Environment.TickCount;
+ Console.WriteLine ("struct specific GetHashCode(): {0}", end-start);
+
+ start = Environment.TickCount;
+ for (int i = 0; i < 1000000; i++)
+ a2.Equals (b2);
+ end = Environment.TickCount;
+ Console.WriteLine ("struct specific Equals(): {0}", end-start);
+
+ return 0;
+ }
+
+ struct Blah
+ {
+ public string s;
+ public int i;
+
+ public Blah (string s, int k)
+ {
+ this.s = s;
+ i = k;
+ }
+ }
+
+ struct Blah2
+ {
+ public string s;
+ public int i;
+
+ public Blah2 (string s, int k)
+ {
+ this.s = s;
+ i = k;
+ }
+
+ public override int GetHashCode () {
+ return i ^ s.GetHashCode ();
+ }
+ public override bool Equals (object obj) {
+ if (obj == null || !(obj is Blah2))
+ return false;
+ Blah2 b = (Blah2)obj;
+ return b.s == this.s && b.i == this.i;
+ }
+ }
+}
+
+++ /dev/null
-using System;
-
-public class ValueType2
-{
- static int Main ()
- {
- Blah a = new Blah ("abc", 1);
- Blah b = new Blah (string.Format ("ab{0}", 'c'), 1);
-
- for (int i = 0; i < 1000000; i++)
- a.Equals (b);
-
- return 0;
- }
-
- struct Blah
- {
- public string s;
- public int i;
-
- public Blah (string s, int k)
- {
- this.s = s;
- i = k;
- }
- }
-}
-
+++ /dev/null
-using System;
-
-public class ValueType2
-{
- static int Main ()
- {
- Blah a = new Blah ("abc", 1);
- Blah b = new Blah (string.Format ("ab{0}", 'c'), 2);
-
- for (int i = 0; i < 1000000; i++)
- a.Equals (b);
-
- return 0;
- }
-
- struct Blah
- {
- public string s;
- public int i;
-
- public Blah (string s, int k)
- {
- this.s = s;
- i = k;
- }
- }
-}
-