#1434 closed doubt (fixed)
Efficiency in Polyn Application
Reported by: | Pedro Gea | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | high | Milestone: | Mantainance |
Component: | Kernel | Version: | |
Severity: | critical | Keywords: | |
Cc: |
Description
Se aprecia algo de ineficiencia al aplicar un polinomio de grado 0 en comparación con multiplicar por un valor real. ¿Tiene alguna explicación? ¿podría subsanarse esto?
En el ejemplo se ve como incluso interesa comprobar el grado del polinomio y prescindir de su aplicación:
Serie s = SubSer(Gaussian(0, 1, C), y2000, y2003); Polyn p = 0.4; Real t1 = Copy(Time); Set For(1, 1000, Real (Real i) { Serie If(Degree(p)==0, Coef(p, 0) * s, p : s); 1}); Real t2 = Copy(Time); Set For(1, 1000, Real (Real i) { Serie p : s; 1}); Real t3 = Copy(Time); Real t21 = t2 - t1; // 1.51s Real t32 = t3 - t2; // 2.92s
Change History (3)
comment:1 Changed 13 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:2 Changed 13 years ago by
Pues efectivamente es muy raro que ocurra eso. He estado mirando y parece que hay una confusión y no se está usando correctamente la caché interna de la clase C++ BTsrPolyn
.
He hecho unos pequeños cambios y ahora tarda menos el polinomio que el producto por constante pues tiene un caché optimizada para la operación de retardos ':', mientras que el producto, cuando es finito como en este caso, utiliza una caché general.
Podría pensarse en implementar una cache ad-hoc para todas las operaciones que lo precisen.
(In [4144]) Fixes #1434