2013-12-19 2 views
1

Я пытаюсь выполнить сериализацию и десериализацию для словарей на C#. Проблема в том, что, когда я делаю Deserialization, это занимает 3-4 минуты. Размер текстового файла - 4.3 МБ. Вот мой код. Пожалуйста, помогите мне.Быстрый способ сериализации и десериализации

[Serializable] 
public class WordTag 
{ 

    public String Word, Tag; 
    public double prob; 

    public WordTag() 
    { } 

    public WordTag(String W, String T) 
    { 
     Word = W; 
     Tag = T; 
    } 

    [Serializable] 
    public class EqualityComparer : IEqualityComparer<WordTag> 
    { 

     public bool Equals(WordTag x, WordTag y) 
     { 
      return x.Word == y.Word && x.Tag == y.Tag; 
     } 

     public int GetHashCode(WordTag x) 
     { 

      return base.GetHashCode(); 
     } 

    } 

} 

.....................

 try 
     { 
      using (Stream stream = File.Open("e:\\WordTagFreq.txt", FileMode.Open)) 
      { 
       BinaryFormatter bin = new BinaryFormatter(); 
       WordTagDic.Clear(); 
       WordTagDic = (Dictionary<WordTag, int>)bin.Deserialize(stream); 
      } 
     } 
     catch (IOException) 
     { 
     } 
+0

Похоже, это было бы намного проще и быстрее, чтобы сделать это без сериализации. –

+0

Вы должны найти, где задержка. 1) о ваших действиях? 2) в большом файле данных, который требует десериализации ... во втором случае используйте другую библиотеку, например, посмотрите на protobuf-net: https://code.google.com/p/protobuf-net/ – Aristos

ответ

Смежные вопросы