Skip to content
Prev 1448 / 15379 Next

[R-es] Rendimiento del R

Hola, ¿qué tal?

Hace mucho que no toco PL/R, pero no creo que ganes demasiado con él
en término de capacidad de proceso. Usando PL/R tu motor (el programa
que va a hacer los cálculos) será R, no Postgres.

En la documentación de PL/R aparece este ejemplo:

CREATE TABLE emp (name text, age int, salary numeric(10,2));
INSERT INTO emp VALUES ('Joe', 41, 250000.00);
INSERT INTO emp VALUES ('Jim', 25, 120000.00);
INSERT INTO emp VALUES ('Jon', 35, 50000.00);


CREATE OR REPLACE FUNCTION overpaid (emp) RETURNS bool AS '
    if (200000 < arg1$salary) {
        return(TRUE)
    }
    if (arg1$age < 30 && 100000 < arg1$salary) {
        return(TRUE)
    }
    return(FALSE)
' LANGUAGE 'plr';


SELECT name, overpaid(emp) FROM emp;
 name | overpaid
------+----------
 Joe  | t
 Jim  | t
 Jon  | f
(3 rows)


Si te das cuenta, en la definición de la función (de R) la tabla de
origen se convierte en un DF de R. Me extrañaría mucho que la
implementación interna fuese muy distinta de:

1) Transforma la tabla en un df de R.
2) Opera con R (en memoria y con las consabidas limitaciones).
3) Vuelca el resultado a Postgres como una tabla.

Igual no es así. Pero podías hacer la prueba con una tabla grande
midiendo el uso de memoria del proceso R (para eso usas Linux, ¿no?)
para ver si es cierto.

Lo que sí que puedes hacer es usar Postgres para agregar y preparar
datos que luego exportes a R.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com



El día 2 de noviembre de 2010 20:03, Maikel (UCI-2009)
<mfrosabal en uci.cu> escribió: