序列化:
phpRPC, .Net 二进制,soap,xml,.Net Json,Hessian,Burlap,NewtonJson,SilverlightSerializer.
其中 phpRPC Hessian,Burlap,SilverlightSerializer都属于二进制序列化
其余为文本传输。
每次测试包含序列化和反序列化。
最后幸存的是:Binary Hessian Burlap NewtonJson SilverlightSerializer.
综合比较 二进制序列化首选 Binary,如果需要支持Silverlight那么SilverlightSerializer也是不错的选择。
如果需要文本传输,那么 NewtonJson 适合你。
代码是从JavaEye论坛上拿过来修改的。
附代码:
代码
using System;
using System.Collections;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization.Formatters.Soap;
using System.Runtime.Serialization.Json;
using System.Xml.Serialization;
using org.phprpc.util;
using Newtonsoft.Json;
using hessiancsharp.io;
using burlapcsharp.io;
using Serialization;
namespace Test {
[Serializable]
class TestClass2
{
public int ID;
public double @double { get; set; }
public bool @bool { get; set; }
public float @float { get; set; }
public double? @double2 { get; set; }
public bool? @bool2 { get; set; }
public float? @float2 { get; set; }
public String UserName { get; set; }
public String Password { get; set; }
public DateTime Birthday { get; set; }
}
[Serializable]
class TestClass {
public IDictionary dictionary { get; set; }
public IList list { get; set; }
//private int[] array = new int[] { 1, 2, 3 };
//public int[] Array { get { return array; } set { } }
public int ID;
public double @double { get; set; }
public bool @bool { get; set; }
public float @float { get; set; }
public double? @double2 { get; set; }
public bool? @bool2 { get; set; }
public float? @float2 { get; set; }
public String UserName { get; set; }
public String Password { get; set; }
public DateTime Birthday { get; set; }
public TestClass2 TestClass2 { get; set; }
}
class Program {
static void RunTest(int time, Object data, String info, String filename) {
GC.Collect();
DateTime start, end;
long size = 0;
StringBuilder sb = new StringBuilder();
StringBuilder categories = new StringBuilder();
StringBuilder dataset1 = new StringBuilder();
StringBuilder dataset2 = new StringBuilder();
Stream stream;
object result = null;
sb.Append("<chart caption='" + time + "次" + info + "序列化与反序列化的比较' shownames='1' showvalues='1' decimals='0' formatNumberScale='0' baseFont='Tahama' baseFontSize='12'>");
categories.Append("<categories>");
dataset1.Append("<dataset seriesName='时间'>");
dataset2.Append("<dataset seriesName='空间'>");
System.Console.WriteLine("--------------------------------------------------------------------------------");
System.Console.WriteLine(time + "次" + info);
try
{
start = DateTime.Now;
PHPFormatter formator1 = new PHPFormatter();
for (int i = 0; i < time; i++)
{
stream = new MemoryStream();
formator1.Serialize(stream, data);
size = stream.Length;
stream.Position = 0;
result = formator1.Deserialize(stream);
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='PHP' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("PHP - " + "\t\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch
{
System.Console.WriteLine("PHP不支持!");
}
GC.Collect();
try
{
start = DateTime.Now;
BinaryFormatter formator2 = new BinaryFormatter();
for (int i = 0; i < time; i++)
{
stream = new MemoryStream();
formator2.Serialize(stream, data);
size = stream.Length;
stream.Position = 0;
result = formator2.Deserialize(stream);
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='Binary' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("Binary - " + "\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch
{
System.Console.WriteLine("Binary不支持!");
}
GC.Collect();
try
{
start = DateTime.Now;
SoapFormatter formator3 = new SoapFormatter();
for (int i = 0; i < time; i++) {
stream = new MemoryStream();
formator3.Serialize(stream, data);
size = stream.Length;
stream.Position = 0;
result = formator3.Deserialize(stream);
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='SOAP' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("SOAP - " + "\t\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch {
System.Console.WriteLine("SOAP不支持!");
}
GC.Collect();
try {
start = DateTime.Now;
XmlSerializer formator4 = new XmlSerializer(data.GetType());
for (int i = 0; i < time; i++) {
stream = new MemoryStream();
formator4.Serialize(stream, data);
size = stream.Length;
stream.Position = 0;
result = formator4.Deserialize(stream);
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='XML' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("XML - " + "\t\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch {
System.Console.WriteLine("XML不支持!");
}
GC.Collect();
try {
start = DateTime.Now;
DataContractJsonSerializer formator5 = new DataContractJsonSerializer(data.GetType());
for (int i = 0; i < time; i++) {
stream = new MemoryStream();
formator5.WriteObject(stream, data);
size = stream.Length;
stream.Position = 0;
result = formator5.ReadObject(stream);
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='JSON' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("JSON - " + "\t\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch {
System.Console.WriteLine("JSON不支持!");
}
GC.Collect();
try {
start = DateTime.Now;
for (int i = 0; i < time; i++) {
stream = new MemoryStream();
CHessianOutput formator6o = new CHessianOutput(stream);
formator6o.WriteObject(data);
size = stream.Length;
stream.Position = 0;
CHessianInput formator6i = new CHessianInput(stream);
result = formator6i.ReadObject();
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='Hessian' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("Hessian - " + "\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch {
System.Console.WriteLine("Hessian不支持!");
}
GC.Collect();
try {
start = DateTime.Now;
for (int i = 0; i < time; i++) {
stream = new MemoryStream();
CBurlapOutput formator7o = new CBurlapOutput(stream);
formator7o.WriteObject(data);
size = stream.Length;
stream.Position = 0;
CBurlapInput formator7i = new CBurlapInput(stream);
result = formator7i.ReadObject();
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='Burlap' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("Burlap - " + "\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch {
System.Console.WriteLine("Burlap不支持!");
}
GC.Collect();
try
{
start = DateTime.Now;
for (int i = 0; i < time; i++)
{
string sstream = JsonConvert.SerializeObject(data);
//File.WriteAllText(@"E:\NewtonJS.txt", sstream);
size = sstream.Length;
result = JsonConvert.DeserializeObject(sstream);
}
end = DateTime.Now;
categories.Append("<category label='NewtonJS' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("NewtonJS - " + "\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch
{
System.Console.WriteLine("NewtonJS不支持!");
}
try
{
start = DateTime.Now;
for (int i = 0; i < time; i++)
{
byte[] sstream = SilverlightSerializer.Serialize(data);
//File.WriteAllBytes(@"E:\SilverSeria.txt", sstream);
size = sstream.Length;
result = SilverlightSerializer.Deserialize(sstream);
}
end = DateTime.Now;
categories.Append("<category label='SilverSeria' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("SilverSeria - " + "\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch
{
System.Console.WriteLine("SilverSeria不支持!");
}
categories.Append("</categories>");
dataset1.Append("</dataset>");
dataset2.Append("</dataset>");
sb.Append(categories);
sb.Append(dataset1);
sb.Append(dataset2);
sb.Append("</chart>");
File.WriteAllText(filename, sb.ToString(), Encoding.Default);
System.Console.WriteLine(result);
System.Console.WriteLine("--------------------------------------------------------------------------------");
GC.Collect();
}
static void Main(string[] args) {
RunTest(10000, 1234567, "对整数1234567", "1.xml");
RunTest(10000, true, "对布尔值true", "2.xml");
RunTest(10000, 1e123, "对浮点数1e123", "3.xml");
RunTest(10000, 1.2, "对浮点数1.2", "4.xml");
RunTest(10000, 1234567890987654321, "对UInt64型1234567890987654321", "5.xml");
RunTest(10000, Double.PositiveInfinity, "对无穷大", "6.xml");
String s = "PHPRPC - perfect high performance remote procedure call";
RunTest(10000, s, "对字符串“" + s + "”", "7.xml");
byte[] ba = new byte[10000];
for (int i = 0; i < 10000; i++)
{
ba[i] = (byte)(i % 255);
}
RunTest(2000, ba, "对10000个元素的字节数组", "8.xml");
string[] sa = new string[100];
for (int i = 0; i < 100; i++)
{
sa[i] = s;
}
RunTest(2000, sa, "对100个相同元素的字符串数组", "9.xml");
sa = new string[100];
for (int i = 0; i < 100; i++)
{
sa[i] = s + i;
}
RunTest(2000, sa, "对100个不同元素的字符串数组", "10.xml");
Hashtable h = new Hashtable();
for (int i = 0; i < 100; i++)
{
h[s + i] = s + (i + 100);
}
RunTest(2000, h, "对索引不同内容不同具有100个字符串元素和字符串索引的 Hashtable", "11.xml");
ArrayList list = new ArrayList();
for (int i = 0; i < 1000; i++) {
TestClass tc = new TestClass();
tc.ID = i;
tc.UserName = "PHPRPC";
tc.Password = "Hello";
tc.Birthday = DateTime.Now;
tc.@float = 0;
tc.float2 = 0;
TestClass2 tc2 = new TestClass2();
tc2.ID = i;
tc2.UserName = "PHPRPC";
tc2.Password = "Hello";
tc2.Birthday = DateTime.Now;
tc2.@float = 0;
tc2.float2 = 0;
tc.TestClass2 = tc2;
try
{
//tc.dictionary = new Hashtable();
tc.dictionary = new Dictionary<string, string>();
tc.dictionary.Add(DateTime.Now.ToString(), DateTime.Now.ToString());
tc.dictionary.Add(DateTime.Now.ToString(), DateTime.Now.ToString());
tc.dictionary.Add(DateTime.Now.ToString(), DateTime.Now.ToString());
tc.dictionary.Add(1, 1);
tc.dictionary.Add(2, 2);
tc.dictionary.Add(3, 3);
}
catch { }
try
{
tc.list = new List<int>();
tc.list.Add(1);
tc.list.Add(1);
tc.list.Add(1);
tc.list.Add(1);
tc.list.Add(1);
tc.list.Add(2);
tc.list.Add(2);
tc.list.Add(2);
tc.list.Add(3);
}
catch { }
list.Add(tc);
}
RunTest(1, list, "对具有1000个自定义类型元素的 ArrayList", "12.xml");
System.Console.WriteLine("--------------------------------------------------------------------------------");
System.Console.WriteLine("----------------------------------END-------------------------------------------");
GC.Collect();
Console.ReadLine();
}
}
}
using System.Collections;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization.Formatters.Soap;
using System.Runtime.Serialization.Json;
using System.Xml.Serialization;
using org.phprpc.util;
using Newtonsoft.Json;
using hessiancsharp.io;
using burlapcsharp.io;
using Serialization;
namespace Test {
[Serializable]
class TestClass2
{
public int ID;
public double @double { get; set; }
public bool @bool { get; set; }
public float @float { get; set; }
public double? @double2 { get; set; }
public bool? @bool2 { get; set; }
public float? @float2 { get; set; }
public String UserName { get; set; }
public String Password { get; set; }
public DateTime Birthday { get; set; }
}
[Serializable]
class TestClass {
public IDictionary dictionary { get; set; }
public IList list { get; set; }
//private int[] array = new int[] { 1, 2, 3 };
//public int[] Array { get { return array; } set { } }
public int ID;
public double @double { get; set; }
public bool @bool { get; set; }
public float @float { get; set; }
public double? @double2 { get; set; }
public bool? @bool2 { get; set; }
public float? @float2 { get; set; }
public String UserName { get; set; }
public String Password { get; set; }
public DateTime Birthday { get; set; }
public TestClass2 TestClass2 { get; set; }
}
class Program {
static void RunTest(int time, Object data, String info, String filename) {
GC.Collect();
DateTime start, end;
long size = 0;
StringBuilder sb = new StringBuilder();
StringBuilder categories = new StringBuilder();
StringBuilder dataset1 = new StringBuilder();
StringBuilder dataset2 = new StringBuilder();
Stream stream;
object result = null;
sb.Append("<chart caption='" + time + "次" + info + "序列化与反序列化的比较' shownames='1' showvalues='1' decimals='0' formatNumberScale='0' baseFont='Tahama' baseFontSize='12'>");
categories.Append("<categories>");
dataset1.Append("<dataset seriesName='时间'>");
dataset2.Append("<dataset seriesName='空间'>");
System.Console.WriteLine("--------------------------------------------------------------------------------");
System.Console.WriteLine(time + "次" + info);
try
{
start = DateTime.Now;
PHPFormatter formator1 = new PHPFormatter();
for (int i = 0; i < time; i++)
{
stream = new MemoryStream();
formator1.Serialize(stream, data);
size = stream.Length;
stream.Position = 0;
result = formator1.Deserialize(stream);
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='PHP' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("PHP - " + "\t\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch
{
System.Console.WriteLine("PHP不支持!");
}
GC.Collect();
try
{
start = DateTime.Now;
BinaryFormatter formator2 = new BinaryFormatter();
for (int i = 0; i < time; i++)
{
stream = new MemoryStream();
formator2.Serialize(stream, data);
size = stream.Length;
stream.Position = 0;
result = formator2.Deserialize(stream);
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='Binary' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("Binary - " + "\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch
{
System.Console.WriteLine("Binary不支持!");
}
GC.Collect();
try
{
start = DateTime.Now;
SoapFormatter formator3 = new SoapFormatter();
for (int i = 0; i < time; i++) {
stream = new MemoryStream();
formator3.Serialize(stream, data);
size = stream.Length;
stream.Position = 0;
result = formator3.Deserialize(stream);
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='SOAP' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("SOAP - " + "\t\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch {
System.Console.WriteLine("SOAP不支持!");
}
GC.Collect();
try {
start = DateTime.Now;
XmlSerializer formator4 = new XmlSerializer(data.GetType());
for (int i = 0; i < time; i++) {
stream = new MemoryStream();
formator4.Serialize(stream, data);
size = stream.Length;
stream.Position = 0;
result = formator4.Deserialize(stream);
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='XML' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("XML - " + "\t\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch {
System.Console.WriteLine("XML不支持!");
}
GC.Collect();
try {
start = DateTime.Now;
DataContractJsonSerializer formator5 = new DataContractJsonSerializer(data.GetType());
for (int i = 0; i < time; i++) {
stream = new MemoryStream();
formator5.WriteObject(stream, data);
size = stream.Length;
stream.Position = 0;
result = formator5.ReadObject(stream);
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='JSON' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("JSON - " + "\t\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch {
System.Console.WriteLine("JSON不支持!");
}
GC.Collect();
try {
start = DateTime.Now;
for (int i = 0; i < time; i++) {
stream = new MemoryStream();
CHessianOutput formator6o = new CHessianOutput(stream);
formator6o.WriteObject(data);
size = stream.Length;
stream.Position = 0;
CHessianInput formator6i = new CHessianInput(stream);
result = formator6i.ReadObject();
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='Hessian' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("Hessian - " + "\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch {
System.Console.WriteLine("Hessian不支持!");
}
GC.Collect();
try {
start = DateTime.Now;
for (int i = 0; i < time; i++) {
stream = new MemoryStream();
CBurlapOutput formator7o = new CBurlapOutput(stream);
formator7o.WriteObject(data);
size = stream.Length;
stream.Position = 0;
CBurlapInput formator7i = new CBurlapInput(stream);
result = formator7i.ReadObject();
stream.Close();
}
end = DateTime.Now;
categories.Append("<category label='Burlap' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("Burlap - " + "\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch {
System.Console.WriteLine("Burlap不支持!");
}
GC.Collect();
try
{
start = DateTime.Now;
for (int i = 0; i < time; i++)
{
string sstream = JsonConvert.SerializeObject(data);
//File.WriteAllText(@"E:\NewtonJS.txt", sstream);
size = sstream.Length;
result = JsonConvert.DeserializeObject(sstream);
}
end = DateTime.Now;
categories.Append("<category label='NewtonJS' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("NewtonJS - " + "\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch
{
System.Console.WriteLine("NewtonJS不支持!");
}
try
{
start = DateTime.Now;
for (int i = 0; i < time; i++)
{
byte[] sstream = SilverlightSerializer.Serialize(data);
//File.WriteAllBytes(@"E:\SilverSeria.txt", sstream);
size = sstream.Length;
result = SilverlightSerializer.Deserialize(sstream);
}
end = DateTime.Now;
categories.Append("<category label='SilverSeria' />");
dataset1.Append("<set value='" + ((end.Ticks - start.Ticks) / 10000) + "'/>");
dataset2.Append("<set value='" + size + "'/>");
System.Console.WriteLine("SilverSeria - " + "\t时间:" + (end.Ticks - start.Ticks) + "\t 长度:" + size);
}
catch
{
System.Console.WriteLine("SilverSeria不支持!");
}
categories.Append("</categories>");
dataset1.Append("</dataset>");
dataset2.Append("</dataset>");
sb.Append(categories);
sb.Append(dataset1);
sb.Append(dataset2);
sb.Append("</chart>");
File.WriteAllText(filename, sb.ToString(), Encoding.Default);
System.Console.WriteLine(result);
System.Console.WriteLine("--------------------------------------------------------------------------------");
GC.Collect();
}
static void Main(string[] args) {
RunTest(10000, 1234567, "对整数1234567", "1.xml");
RunTest(10000, true, "对布尔值true", "2.xml");
RunTest(10000, 1e123, "对浮点数1e123", "3.xml");
RunTest(10000, 1.2, "对浮点数1.2", "4.xml");
RunTest(10000, 1234567890987654321, "对UInt64型1234567890987654321", "5.xml");
RunTest(10000, Double.PositiveInfinity, "对无穷大", "6.xml");
String s = "PHPRPC - perfect high performance remote procedure call";
RunTest(10000, s, "对字符串“" + s + "”", "7.xml");
byte[] ba = new byte[10000];
for (int i = 0; i < 10000; i++)
{
ba[i] = (byte)(i % 255);
}
RunTest(2000, ba, "对10000个元素的字节数组", "8.xml");
string[] sa = new string[100];
for (int i = 0; i < 100; i++)
{
sa[i] = s;
}
RunTest(2000, sa, "对100个相同元素的字符串数组", "9.xml");
sa = new string[100];
for (int i = 0; i < 100; i++)
{
sa[i] = s + i;
}
RunTest(2000, sa, "对100个不同元素的字符串数组", "10.xml");
Hashtable h = new Hashtable();
for (int i = 0; i < 100; i++)
{
h[s + i] = s + (i + 100);
}
RunTest(2000, h, "对索引不同内容不同具有100个字符串元素和字符串索引的 Hashtable", "11.xml");
ArrayList list = new ArrayList();
for (int i = 0; i < 1000; i++) {
TestClass tc = new TestClass();
tc.ID = i;
tc.UserName = "PHPRPC";
tc.Password = "Hello";
tc.Birthday = DateTime.Now;
tc.@float = 0;
tc.float2 = 0;
TestClass2 tc2 = new TestClass2();
tc2.ID = i;
tc2.UserName = "PHPRPC";
tc2.Password = "Hello";
tc2.Birthday = DateTime.Now;
tc2.@float = 0;
tc2.float2 = 0;
tc.TestClass2 = tc2;
try
{
//tc.dictionary = new Hashtable();
tc.dictionary = new Dictionary<string, string>();
tc.dictionary.Add(DateTime.Now.ToString(), DateTime.Now.ToString());
tc.dictionary.Add(DateTime.Now.ToString(), DateTime.Now.ToString());
tc.dictionary.Add(DateTime.Now.ToString(), DateTime.Now.ToString());
tc.dictionary.Add(1, 1);
tc.dictionary.Add(2, 2);
tc.dictionary.Add(3, 3);
}
catch { }
try
{
tc.list = new List<int>();
tc.list.Add(1);
tc.list.Add(1);
tc.list.Add(1);
tc.list.Add(1);
tc.list.Add(1);
tc.list.Add(2);
tc.list.Add(2);
tc.list.Add(2);
tc.list.Add(3);
}
catch { }
list.Add(tc);
}
RunTest(1, list, "对具有1000个自定义类型元素的 ArrayList", "12.xml");
System.Console.WriteLine("--------------------------------------------------------------------------------");
System.Console.WriteLine("----------------------------------END-------------------------------------------");
GC.Collect();
Console.ReadLine();
}
}
}