コード例 #1
0
        public void EnumeratorTest()
        {
            ClusterPoint p = new ClusterPoint(1, 2, Guid.NewGuid());
            MemoryStream stream = new MemoryStream();
            const int NumElements = 5;
            for (int i = 0; i < NumElements; i++)
            {
                stream.Write(p.ToByteArray(), 0, ClusterPoint.Size);
            }

            ObjectStreamReader<ClusterPoint> pointStream = new ObjectStreamReader<ClusterPoint>(new MemoryStream(stream.ToArray()), ClusterPoint.FromByteArray, ClusterPoint.Size);
            Assert.AreEqual(p.CentroidID, pointStream.First().CentroidID);

            DateTime serialStart = DateTime.Now;
            int[] serialOutput = pointStream.Select(point =>
            {
                System.Threading.Thread.Sleep(200);
                return 1;
            }).ToArray();
            DateTime serialEnd = DateTime.Now;
            Assert.AreEqual(NumElements, serialOutput.Length);

            DateTime parallelStart = DateTime.Now;
            int[] parallelOutput = pointStream.AsParallel().Select(point =>
            {
                System.Threading.Thread.Sleep(200);
                return 1;
            }).ToArray();
            DateTime parallelEnd = DateTime.Now;
            Assert.AreEqual(NumElements, parallelOutput.Length);

            System.Diagnostics.Trace.WriteLine(string.Format("serial: {0}, parallel: {1}",
                (serialEnd - serialStart).TotalSeconds,
                (parallelEnd - parallelStart).TotalSeconds));
        }
コード例 #2
0
        public void ToByteArrayTest()
        {
            Guid centroidID = Guid.NewGuid();
            ClusterPoint target = new ClusterPoint
            {
                X = 1.23,
                Y = 3.45,
                CentroidID = centroidID
            };

            MemoryStream stream = new MemoryStream();
            stream.Write(BitConverter.GetBytes(1.23), 0, sizeof(double));
            stream.Write(BitConverter.GetBytes(3.45), 0, sizeof(double));
            stream.Write(centroidID.ToByteArray(), 0, 16);
            byte[] expected = stream.ToArray();

            byte[] actual;
            actual = target.ToByteArray();
            Assert.AreEqual(expected.Length, actual.Length);
            for (int i = 0; i < expected.Length; i++)
            {
                Assert.AreEqual(expected[i], actual[i]);
            }
        }