diff --git a/Benchmarks/Benchmarks.csproj b/Benchmarks/Benchmarks.csproj
new file mode 100644
index 0000000..400e6a5
--- /dev/null
+++ b/Benchmarks/Benchmarks.csproj
@@ -0,0 +1,17 @@
+
+
+
+ Exe
+ net8.0
+ enable
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Benchmarks/Program.cs b/Benchmarks/Program.cs
new file mode 100644
index 0000000..fd5278d
--- /dev/null
+++ b/Benchmarks/Program.cs
@@ -0,0 +1,47 @@
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Running;
+using MatFileHandler;
+using System;
+using System.IO;
+
+namespace Benchmarks;
+
+[MemoryDiagnoser]
+public class BigWriteBenchmark
+{
+ private IMatFile? matFile;
+
+ [GlobalSetup]
+ public void GlobalSetup()
+ {
+ var m = 1000;
+ var n = 10000;
+ var builder = new DataBuilder();
+ var array = builder.NewArray(m, n);
+ var random = new Random(1);
+ for (var i = 0; i < m * n; i++)
+ {
+ array[i] = random.NextDouble();
+ }
+
+ var variable = builder.NewVariable("test", array);
+ matFile = builder.NewFile(new[] { variable });
+ }
+
+ [Benchmark]
+ public void V1()
+ {
+ using var stream = new MemoryStream();
+ var writer = new MatFileWriter(stream);
+ writer.Write(matFile!);
+ }
+}
+
+internal class Program
+{
+ static void Main(string[] args)
+ {
+ Console.WriteLine("Hello, World!");
+ BenchmarkRunner.Run();
+ }
+}
diff --git a/MatFileHandler.Tests/ChecksumCalculatingStreamTests.cs b/MatFileHandler.Tests/ChecksumCalculatingStreamTests.cs
new file mode 100644
index 0000000..9548c2b
--- /dev/null
+++ b/MatFileHandler.Tests/ChecksumCalculatingStreamTests.cs
@@ -0,0 +1,105 @@
+// Copyright 2017-2018 Alexander Luzgarev
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using Xunit;
+
+namespace MatFileHandler.Tests;
+
+///
+/// Tests for the class.
+///
+public class ChecksumCalculatingStreamTests
+{
+ ///
+ /// Test writing various things.
+ ///
+ ///
+ [Theory]
+ [MemberData(nameof(TestData))]
+ public void Test(Action action)
+ {
+ using var stream = new MemoryStream();
+ var sut = new ChecksumCalculatingStream(stream);
+ action(sut);
+ var actual = sut.GetCrc();
+ var expected = ReferenceCalculation(action);
+ }
+
+ ///
+ /// Test data for .
+ ///
+ /// Test data.
+ public static IEnumerable