Feature #2167
Caches on Java side some R data values
Statut: | New | Début: | 25/04/2017 | |
---|---|---|---|---|
Priorité: | Normal | Echéance: | ||
Assigné à: | - | % réalisé: | 0% |
|
Catégorie: | Stats / R | Temps passé: | - | |
Version cible: | TXM 0.8.4 |
Description
Discuss about caches on Java side some R data values or not.
At this time, some results do that and some others don't.
Eg. At this moment it seems there is a bug with CAH and large corpus, R consumes up to 2 Go od RAM and never ends. Maybe cache can help.
Eg. Lexical Table, add cache to getFreqs() method to not query R each time frequencies are needed.
(Discuss about this because we may want the Java object reflects the R object. At this moment it is not uniform for all TXM results)
Original :
@Override public List<Integer> getFreqs() { ArrayList<Integer> freqs = new ArrayList<Integer>(); ArrayList<double[]> cols = new ArrayList<double[]>(); int Nrows = this.getNRows(); int Ncols = this.getNColumns(); for (int i = 0; i < Ncols; i++) try { cols.add(this.getCol(i).asDoubleArray()); } catch (RException e) { // TODO Auto-generated catch block org.txm.utils.logger.Log.printStackTrace(e); } catch (RWorkspaceException e) { // TODO Auto-generated catch block org.txm.utils.logger.Log.printStackTrace(e); } catch (StatException e) { // TODO Auto-generated catch block org.txm.utils.logger.Log.printStackTrace(e); } int sum = 0; for (int i = 0; i < Nrows; i++) { sum = 0; for (int j = 0; j < Ncols; j++) sum += (int) cols.get(j)[i]; freqs.add(sum); } return freqs; }
Proposal :
@Override public List<Integer> getFreqs() { // caching if(this.frequencies == null) { this.frequencies = new ArrayList<Integer>(); ArrayList<double[]> cols = new ArrayList<double[]>(); int Nrows = this.getNRows(); int Ncols = this.getNColumns(); for (int i = 0; i < Ncols; i++) try { cols.add(this.getCol(i).asDoubleArray()); } catch (RException e) { // TODO Auto-generated catch block org.txm.utils.logger.Log.printStackTrace(e); } catch (RWorkspaceException e) { // TODO Auto-generated catch block org.txm.utils.logger.Log.printStackTrace(e); } catch (StatException e) { // TODO Auto-generated catch block org.txm.utils.logger.Log.printStackTrace(e); } int sum = 0; for (int i = 0; i < Nrows; i++) { sum = 0; for (int j = 0; j < Ncols; j++) sum += (int) cols.get(j)[i]; this.frequencies.add(sum); } } return this.frequencies; }
Historique
#1 Mis à jour par Sebastien Jacquot il y a plus de 8 ans
- Description mis à jour (diff)
#2 Mis à jour par Sebastien Jacquot il y a plus de 8 ans
- Description mis à jour (diff)
#3 Mis à jour par Sebastien Jacquot il y a presque 7 ans
- Version cible changé de TXM 0.8.0a (split/restructuration) à TXM 0.8.2
#4 Mis à jour par Sebastien Jacquot il y a plus de 5 ans
- Sujet changé de Lexical Table, add cache to getFreqs() method to not query R each time frequencies are needed à Caches on Java side some R data values
- Description mis à jour (diff)
- Catégorie changé de Development à Stats / R
#5 Mis à jour par Sebastien Jacquot il y a plus de 5 ans
- Description mis à jour (diff)
#6 Mis à jour par Matthieu Decorde il y a plus de 4 ans
- Version cible changé de TXM 0.8.2 à TXM 0.8.4