Copy files using a runtime created batch file C#

If you would like to copy one or several files using a batch file. The command for that is “copy {target} {destination}”. It’s also possible to use wildcards i.e “copy *.txt c:\temp”.
To create a bat (batch) file on runtime and then execute the file you could write something like this in C#.


string batchFileName = @"C:\{filePath}\copy.bat";
System.IO.File.WriteAllText(batFileName, @"copy {fileName}.{extension} {destination-filePath}");
System.Diagnostics.Process.Start(batFileName);

Serialization – Tidsjämförelser (Soap, JS, Binary)

Gillar ju att testa kodexekveringstider då det känns dumt att göra en sak som tar 10 sekunder när det går att göra på 3. Så var lite nyfiken på skillnaderna när det gäller att serialisera och deserialisera strängar och objekt.

Jämförde SoapFormatter, BinaryFormatter och JavaScriptSerializer. Enligt pseudo koden:

Iterera 10 gånger
{
Iterera 1000 ggr
{
string s = serialisera(objekt);
objekt o = deserialisera(s);
}
}

Kod för serialisering / deserialisering.

SoapFormatter:
private Member DeserialSoap(string input)
{
using (Stream stream = new MemoryStream())
{
foreach (char c in input.ToCharArray())
{
stream.WriteByte(Convert.ToByte(c));
}
stream.Seek(0, SeekOrigin.Begin);
SoapFormatter formatter = new SoapFormatter();
Member m = (Member)formatter.Deserialize(stream);
stream.Close();
return m;
}
}
private string SerializeSoapString(Member m)
{
using (MemoryStream oStream = new MemoryStream())
{
(new SoapFormatter()).Serialize(oStream, m);
return Encoding.Default.GetString(oStream.ToArray());
}
}

BinaryFormatter:
private Member DeserialBinary(string s)
{
using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(s)))
{
return (Member) new BinaryFormatter().Deserialize(ms);
}

}
private string SerialBinary(Member m)
{
using (MemoryStream s = new MemoryStream())
{
new BinaryFormatter().Serialize(s, m);
return Convert.ToBase64String(s.ToArray());
}
}
JavaScriptSerializer:
private Member DeserialJS(string s)
{
return (Member) new JavaScriptSerializer().Deserialize(s, typeof(Member));
}
private string SerialJS(Member m)
{
return new JavaScriptSerializer().Serialize(m);
}

Fick 10 mätpunkter för varje 10000’e iteration och tog genomsnittet.

Tid (millisekunder) för 10.000 iterationer (en serialisering och en deserialisering):

SoapFormatter
============
AVG: 1908

BinaryFormatter
=============
AVG: 407

JavaScriptSerializer
================
AVG: 993