Author: bpoussin Date: 2012-09-08 02:05:49 +0200 (Sat, 08 Sep 2012) New Revision: 96 Url: http://forge.codelutin.com/repositories/revision/isis-fish-docs/96 Log:
From scmwebeditor -- add the file : architectureResult.rst
Added: trunk/src/site/rst/v4/devel/architectureResult.rst Added: trunk/src/site/rst/v4/devel/architectureResult.rst =================================================================== --- trunk/src/site/rst/v4/devel/architectureResult.rst (rev 0) +++ trunk/src/site/rst/v4/devel/architectureResult.rst 2012-09-08 00:05:49 UTC (rev 96) @@ -0,0 +1,82 @@ +.. - +.. * #%L +.. * IsisFish +.. * +.. * $Id$ +.. * $HeadURL$ +.. * %% +.. * Copyright (C) 1999 - 2011 Ifremer, Code Lutin, Chatellier Eric +.. * %% +.. * This program is free software: you can redistribute it and/or modify +.. * it under the terms of the GNU General Public License as +.. * published by the Free Software Foundation, either version 2 of the +.. * License, or (at your option) any later version. +.. * +.. * This program is distributed in the hope that it will be useful, +.. * but WITHOUT ANY WARRANTY; without even the implied warranty of +.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.. * GNU General Public License for more details. +.. * +.. * You should have received a copy of the GNU General Public +.. * License along with this program. If not, see +.. * <http://www.gnu.org/licenses/gpl-2.0.html>. +.. * #L% +.. - + +Architecture des résultats +========================== + +Depuis la version 4.1.1.2 le stockage des résultats de simulation ne se font +plus dans la base de données mais dans un fichier binaire. Les performances +et l'utilisation mémoire en sont grandement améliorées. + +Les résultats sont des informations empilées au fur et à mesure du temps. Il +n'y a aucune modification des résultats une fois ceux-ci enregistré. + +Le format de sauvegarde s'appuie sur ce constant pour stocker l'information. + +Structure d'un enregistrement: +- mark qui indique le type de résultat (et possiblement la version du format) +- le résultat + +Les enregistrements sont mis bout à bout. Un gestionnaire spécifique +(lecture/écriture) doit être écrit pour chaque type de résultat. + +Format du mark +-------------- +Le mark est un long qui represente en fait une chaine de 8 caractères. +Pour encoder et decoder la chaine, il faut utiliser BitUtil.toMark +BitUtil.fromMark + +Résultat matriciel +------------------ + +Structure: +- (long) mark: 'resmat01' +- (int) step: le numero du pas de temps +- (UTF8) name: nom du résultat +- (int) dimSize: le nombre de dimension de la matrice +- (UTF8)+ dimNames: les noms de différentes dimensions +- (int)+ dims: la taille de chaque dimensions +- (UTF8)+ sems: les semantiques de toutes les dimensions +- (int) dataSize: le nombre de cellules de la matrice +- (double)+ data: toutes les valeurs de la matrice + +Performance +----------- + +Les simulations grâce à ce nouveau format sont environs 6 fois plus rapide, +mais surtout, elles ont une consomation mémoire beaucoup moindre qui permet +de faire des simulations plus importantes dans des temps acceptable, vu que +la JVM utilise moins le GC. + +Développement futur +------------------- +Avec ce mécanisme, il sera simple d'ajouter de nouveaux types de résultat. +Un lecteur générique redirigerais la lecture vers le bon type en fonction du +mark qui est devant chaque résulat. + +Pour l'écriture chaque objet aurait son propre moyen d'écrire les +informations dont il a besoin pour se recharger en mettant toujours un mark +particulier avant d'enregistrer ces informations. +