Je dois sérialiser un OrderedDictionary, et j'en ai besoin rapidement. Je ne me soucie pas de la sécurité ou de la lisibilité humaine, j'ai juste besoin du moyen le plus rapide d'écrire le OrderedDictionary pour le lire et le relire, tant que la sérialisation est cohérente (même paire de paires clé-valeur, même contenu de fichier). BinaryFormatter est-il le meilleur choix?Sérialiseur C# le plus rapide
Répondre
BinaryFormatter est presque certainement le plus rapide des sérialiseurs intégrés, mais il ne serait pas très difficile de mesurer les alternatives et de vérifier.
Vous pouvez consulter le protobuf, le format de sérialisation de Google. Il existe plusieurs implémentations pour C#:
Il y a un performance comparison en ligne.
Si vous cherchez le meilleur moyen, le codage supplémentaire ne pas être un problème, vous pouvez essayer ceci:
sérialisation: 1. Écrivez vos données à un dictionnaire tableau d'octets en mémoire. En supposant que votre dictionnaire n'est pas trop grand, cela devrait être relativement bon marché, dans le temps. 2. Écrivez un petit en-tête contenant les enregistrements #, puis écrivez le tableau dans le fichier.
Désérialisez: 1. Lisez les # éléments et instanciez votre OrderedDictionary avec cela comme capacité. 2. Relire les données dans un tableau, instancier chaque objet et réécrire dans OrderedDictionary.
Je pense que ce ne sera pas beaucoup plus rapide que les méthodes plus traditionnelles, mais peut-être vaut la peine d'essayer si vous essayez de sortir chaque morceau de performance. Un moyen plus rapide serait d'écrire votre propre IOrderedDictionary avec une connaissance intime de vos objets, et de le stocker de manière optimisée pour une sérialisation rapide (par exemple un tampon plat qui peut être claqué sur le disque rapidement). Peut-être serait-il encore plus rapide d'utiliser un format de fichier d'indexation (peut-être SQLite?) Et d'y écrire un adaptateur IOrderedDictionary de mise en cache. Cela vous permettrait d'amortir le coût de la désérialisation.
- 1. Quel est le sérialiseur le plus rapide de Java?
- 2. Comment rendre le sérialiseur Jackson plus SEC?
- 3. Container C++ le plus rapide: valeurs uniques
- 4. Ajout binaire plus rapide C++
- 5. C# est-il plus rapide que VB.NET?
- 6. algorithme etag le plus rapide
- 7. Lequel est le plus rapide?
- 8. C++ vecteur emplace_back est plus rapide?
- 9. Quel est le egrep le plus rapide
- 10. Sérialiseur et héritage personnalisés en C#
- 11. Le plus rapide C++ Signal/Slot Lib sans dépendance
- 12. Lequel est le plus rapide, C# ou Vb.net?
- 13. C# - Quel est le plus rapide: String.Contains() ou Regex.isMatch()?
- 14. Code C# le plus rapide pour télécharger une page Web
- 15. Lecteur/graveur JSON le plus rapide pour C++
- 16. moyen le plus rapide de trouver une chaîne en C#?
- 17. C# - swap Dernier, premier moyen MI le plus rapide
- 18. fonction statique plus rapide?
- 19. Le backend le plus rapide/le plus simple pour angluarjs?
- 20. chaîne plus rapide permutation
- 21. Quel acteur est le plus rapide?
- 22. Plus rapide que xlib
- 23. Sérialiseur minuscule
- 24. plus rapide HTML Downloader
- 25. Trouver le chemin le plus rapide possible
- 26. Le moyen le plus rapide d'apprendre Maven
- 27. Le plugin jQuery autoellipsis le plus rapide?
- 28. Hash table plus rapide en C# qu'en C++?
- 29. L'analyse XML est plus rapide en C/C++ ou Java?
- 30. MongoDB C# - Masquer propriété de sérialiseur
Vous devriez certainement regarder le lien de performance dans l'autre réponse aussi - mais pas * à la place * de faire vos propres tests. –