看看 类的序列化及反序列化的耗时

来源:互联网 发布:mysql 无需密码登录 编辑:程序博客网 时间:2024/05/01 09:08

 

下面是一个测试类的序列化的例子,可以看看序列化和反序列化的耗时

namespace Queue {
    [Serializable]
    
public class Person {
        
private int _age;
        
private string _name;

        
public Person() {
            _age 
= -1;
            _name 
= string.Empty;
        }


        
public Person(int age, string name) {
            _age 
= age;
            _name 
= name;
        }


        
public int Age {
            
get {
                
return _age;
            }

            
set {
                _age 
= value;
            }

        }


        
public string Name {
            
get {
                
return _name;
            }

            
set {
                _name 
= value;
            }

        }


    }

}
namespace Queue {
    
class Program {
        
static void Main(string[] args) {
           
            Person person 
= new Person(23"guangboo");

            XmlSerializerFactory factory 
= new XmlSerializerFactory();
            XmlSerializer serializer 
= factory.CreateSerializer(Type.GetType("Queue.Person"));
            StringWriter writer 
= new StringWriter();
            TextReader reader 
= null;

            DateTime dt 
= DateTime.Now; //总的开始时间

            
int i = 1;
            
while (i-- > 0{
                reader 
= null;
                writer 
= new StringWriter();
                DateTime startTime 
= DateTime.Now;
                Console.WriteLine(
"序列化开始时间:" + startTime.Second.ToString() + ":" + startTime.Millisecond.ToString());

                serializer.Serialize(writer, person);

                DateTime endTime 
= DateTime.Now;
                Console.WriteLine(
"序列化结束时间:" + endTime.Second.ToString() + ":" + endTime.Millisecond.ToString());
                Console.WriteLine(
"序列化耗时:" + (endTime.Ticks - startTime.Ticks));

                Console.WriteLine(writer.GetStringBuilder().ToString());
                Console.WriteLine(
"------------序列化成功-------------");

                reader 
= new StringReader(writer.GetStringBuilder().ToString());

                DateTime startTime2 
= DateTime.Now;
                Console.WriteLine(
"反序列化开始时间:" + startTime2.Second.ToString() + ":" + startTime2.Millisecond.ToString());

                Person p 
= (Person)serializer.Deserialize(reader);

                DateTime endTime2 
= DateTime.Now;
                Console.WriteLine(
"反序列化结束时间:" + endTime2.Second.ToString() + ":" + endTime2.Millisecond.ToString());
                Console.WriteLine(
"反序列化耗时:" + (endTime2.Ticks - startTime2.Ticks));

                Console.WriteLine(
"-------------反序列化成功------------");
                reader.Close();
                writer.Close();
            }

            
            DateTime dt2 
= DateTime.Now;
            
long ticks = dt2.Ticks - dt.Ticks;
            Console.WriteLine(
string.Format("--------------共耗时{0}毫秒---{1}--------------",DateTime.FromBinary(ticks).Millisecond,ticks));
            Console.Read();
        }

    }

}
 
原创粉丝点击