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 environ 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 presque 6 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 presque 6 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