2012-07-23 4 views
0

Dans mon application actuelle, j'ai besoin de créer un référentiel de base de cas suivant le paradigme d'apprentissage basé sur l'instance bien connu dans la communauté IA.Stockage de l'image-mémoire exacte d'un vecteur

Le référentiel de base de données doit être stocké de manière persistante entre deux appels dans l'application .

Cependant, je suis inquiet que la sérialisation/désérialisation qu'implique cette (probablement JSON ou un format léger pour les paires clé-valeur) impose tant frais généraux d'E/S la programmation d'un bon mécanisme d'indexation (qui fonctionne sur la description en mémoire de la base de cas ) accélérera seulement une petite partie et donc ne donne aucun avantage substantiel.

Maintenant, je pense qu'il ya deux solutions

a) Essayez d'indexer directement dans le fichier, effectuer E/S et l'indexation en même temps . B) Enregistrer d'une manière ou d'une autre l'image mémoire de la représentation en mémoire de la base de données dans le fichier afin que "l'analyse de fichier" se réduise ensuite à un simple memcpy (y compris le mappage de mémoire). Notez que le format de fichier est alors binaire et non basé UTF-8 comme sous a).

Est-ce que quelqu'un a déjà rencontré un problème similaire et a essayé quelque chose le long des lignes de b)?

+1

À quel point votre vecteur est-il compliqué? Avez-vous besoin de partager les données entre plusieurs plates-formes (c.-à-endianness)? – GWW

+3

Etes-vous sûr que votre plan actuel de sérialisation entraînera un ralentissement? On dirait une optimisation prématurée pour moi. Je suggère de le faire fonctionner d'abord, puis si vous trouvez que IO est un goulot d'étranglement (à travers le profilage réellement) alors essayez de trouver une solution plus optimale. – Chad

+0

D'accord avec Tchad - cela ressemble à une optimisation prématurée. – Scotty

Répondre