#167 closed defect (fixed)
Efficiency problem when dealing with some TimeSet operations ?
Reported by: | jimarin | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | TimeSetAlgebra | Version: | 1.1.1 |
Severity: | normal | Keywords: | |
Cc: |
Description
Hi all,
I have found the following behaviour that seems an efficiency problem to me,
perhaps it is not, but I have preferred to point this out.
I try to define several festivities...
(I paste almost the whole file not to leave anything behind, I will indicate
afterwards which is the tricky part)
Festivos
Serie FesSaoPaulo.FundacaoDeSaoPaulo = CalInd(D(25)*M(1)-WD(7), Diario);
Serie FesSaoPaulo.RevolucaoDeSaoPaulo = CalInd(D(9)*M(7)-WD(7), Diario);
Natal Novo Paixao 02 03
Serie FesBrasil.Natal_02 = CalInd(Y(2002)*D(25)*M(12)-WD(7), Diario);
Serie FesBrasil.Natal_Escalon_PreAnoNovo_02 = CalInd(Range(Y(2002)*D(26)*M
(12),0,4), Diario);
Serie FesBrasil.Natal_PreSolo24_02 = CalInd(Y(2002)*D(24)*M(12)-WD(7),
Diario);
Serie FesBrasil.Natal_PulsoDomingoEntre26y30_02 = CalInd((Range(Y(2002)*D
(26)*M(12),0,4))*WD(7), Diario);
Serie FesBrasil.Natal_PulsoSabadoEntre26y30_02 = CalInd((Range(Y(2002)*D(26)
*M(12),0,4))*WD(6), Diario);
Serie FesBrasil.Ano_Novo_03 = CalInd(Y(2003)*D(1)*M(1)-WD(7), Diario);
Serie FesBrasil.Ano_Novo_Pre_02 = CalInd(Y(2002)*D(31)*M(12)-WD(7), Diario);
Serie FesBrasil.Paixao_03 = CalInd(Succ(Y(2003)*Easter,-6), Diario);
0.1+0.1*B+0.1*B2+0.1*B3+0.1*B4+0.1*B5+0.1*B6
Natal Novo Paixao 03 04
Serie FesBrasil.Natal_03 = CalInd(Y(2003)*D(25)*M(12)-WD(7), Diario);
Serie FesBrasil.Natal_Escalon_PreAnoNovo_03 = CalInd(Range(Y(2003)*D(26)*M
(12),0,4), Diario);
Serie FesBrasil.Natal_PreSolo24_03 = CalInd(Y(2003)*D(24)*M(12)-WD(7),
Diario);
Serie FesBrasil.Natal_PulsoDomingoEntre26y30_03 = CalInd((Range(Y(2003)*D
(26)*M(12),0,4))*WD(7), Diario);
Serie FesBrasil.Natal_PulsoSabadoEntre26y30_03 = CalInd((Range(Y(2003)*D(26)
*M(12),0,4))*WD(6), Diario);
Serie FesBrasil.Ano_Novo_04 = CalInd(Y(2004)*D(1)*M(1)-WD(7), Diario);
Serie FesBrasil.Ano_Novo_Pre_03 = CalInd(Y(2003)*D(31)*M(12)-WD(7), Diario);
Serie FesBrasil.Paixao_04 = CalInd(Succ(Y(2004)*Easter,-6), Diario);
0.1+0.1*B+0.1*B2+0.1*B3+0.1*B4+0.1*B5+0.1*B6
Natal Novo Paixao Common
Serie FesBrasil.Natal_Common = CalInd(D(25)*M(12)-WD(7), Diario);
Serie FesBrasil.Natal_Escalon_PreAnoNovo_Common = CalInd(Range(D(26)*M
(12),0,4), Diario);
Serie FesBrasil.Natal_PreSolo24_Common = CalInd(D(24)*M(12)-WD(7), Diario);
Serie FesBrasil.Natal_PulsoDomingoEntre26y30_Common = CalInd((Range(D(26)
*M(12),0,4))*WD(7), Diario);
Serie FesBrasil.Natal_PulsoSabadoEntre26y30_Common = CalInd((Range(D(26)*M
(12),0,4))*WD(6), Diario);
Serie FesBrasil.Ano_Novo_Common = CalInd(D(1)*M(1)-WD(7), Diario);
Serie FesBrasil.Ano_Novo_Pre_Common = CalInd(D(31)*M(12)-WD(7), Diario);
Serie FesBrasil.Paixao_Common = CalInd(Succ(Easter,-6), Diario);
0.1+0.1*B+0.1*B2+0.1*B3+0.1*B4+0.1*B5+0.1*B6
ciclo semanal Natal 02_03, 03_04
TimeSet nav_02 = In(y2002m12d23, y2003m1d6, Diario);
TimeSet nav_03 = In(y2003m12d22, y2004m1d5, Diario);
Serie cs1_02 = CalInd(nav_02*WD(1), Diario) - CalInd(nav_02*WD(7), Diario);
Serie cs2_02 = CalInd(nav_02*WD(2), Diario) - CalInd(nav_02*WD(7), Diario);
Serie cs3_02 = CalInd(nav_02*WD(3), Diario) - CalInd(nav_02*WD(7), Diario);
Serie cs4_02 = CalInd(nav_02*WD(4), Diario) - CalInd(nav_02*WD(7), Diario);
Serie cs5_02 = CalInd(nav_02*WD(5), Diario) - CalInd(nav_02*WD(7), Diario);
Serie cs6_02 = CalInd(nav_02*WD(6), Diario) - CalInd(nav_02*WD(7), Diario);
Serie cs1_03 = CalInd(nav_03*WD(1), Diario) - CalInd(nav_03*WD(7), Diario);
Serie cs2_03 = CalInd(nav_03*WD(2), Diario) - CalInd(nav_03*WD(7), Diario);
Serie cs3_03 = CalInd(nav_03*WD(3), Diario) - CalInd(nav_03*WD(7), Diario);
Serie cs4_03 = CalInd(nav_03*WD(4), Diario) - CalInd(nav_03*WD(7), Diario);
Serie cs5_03 = CalInd(nav_03*WD(5), Diario) - CalInd(nav_03*WD(7), Diario);
Serie cs6_03 = CalInd(nav_03*WD(6), Diario) - CalInd(nav_03*WD(7), Diario);
Serie niv_02 = CalInd(nav_02, Diario);
Serie niv_03 = CalInd(nav_03, Diario);
ciclo semanal Natal
TimeSet semana25 = Range(Range(M(12)*D(25), -6, 0)*WD(1),0,6);
TimeSet semana31 = Range(Range(M(12)*D(25), -6, 0)*WD(1),0,6);
niveles iguales para los dos años, distintos para las dos semanas
Serie nivSemana25 = CalInd(semana25, Diario);
Serie nivSemana31 = CalInd(semana31, Diario);
ciclos distintos para los dos años, iguales para las dos semanas
TimeSet navp_02 = In(y2002m12d23, y2003m1d5, Diario);
TimeSet navp_03 = In(y2003m12d22, y2004m1d4, Diario);
Serie cps1_02 = CalInd(navp_02*WD(1)-D(24)-D(25)-D(31)-D(1), Diario) -
CalInd(navp_02*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);
Serie cps2_02 = CalInd(navp_02*WD(2)-D(24)-D(25)-D(31)-D(1), Diario) -
CalInd(navp_02*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);
Serie cps3_02 = CalInd(navp_02*WD(3)-D(24)-D(25)-D(31)-D(1), Diario) -
CalInd(navp_02*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);
Serie cps4_02 = CalInd(navp_02*WD(4)-D(24)-D(25)-D(31)-D(1), Diario) -
CalInd(navp_02*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);
Serie cps5_02 = CalInd(navp_02*WD(5)-D(24)-D(25)-D(31)-D(1), Diario) -
CalInd(navp_02*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);
Serie cps6_02 = CalInd(navp_02*WD(6)-D(24)-D(25)-D(31)-D(1), Diario) -
CalInd(navp_02*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);
Serie cps1_03 = CalInd(navp_03*WD(1)-D(24)-D(25)-D(31)-D(1), Diario) -
CalInd(navp_03*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);
Serie cps2_03 = CalInd(navp_03*WD(2)-D(24)-D(25)-D(31)-D(1), Diario) -
CalInd(navp_03*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);
Serie cps3_03 = CalInd(navp_03*WD(3)-D(24)-D(25)-D(31)-D(1), Diario) -
CalInd(navp_03*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);
Serie cps4_03 = CalInd(navp_03*WD(4)-D(24)-D(25)-D(31)-D(1), Diario) -
CalInd(navp_03*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);
Serie cps5_03 = CalInd(navp_03*WD(5)-D(24)-D(25)-D(31)-D(1), Diario) -
CalInd(navp_03*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);
Serie cps6_03 = CalInd(navp_03*WD(6)-D(24)-D(25)-D(31)-D(1), Diario) -
CalInd(navp_03*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);
Carnaval
Serie FesBrasil.CarnavalEsp = CalInd(Succ(Easter, -56, Diario), Diario);
Serie FesBrasil.Carnaval_EscalonNeg = CalInd(Range(Succ(Easter,-55),0,4),
Diario);
Serie FesBrasil.Carnaval_Pulsos = CalInd(Succ(Easter,-50), Diario);
0.1+0.1*B+0.1*B2+0.1*B3+0.1*B4
Serie FesBrasil.Pre_CorpusChristi = CalInd(Succ(Easter, 59)-WD(7), Diario);
Serie FesBrasil.CorpusChristi = CalInd(Succ(Easter, 60)-WD(7), Diario);
Serie FesBrasil.DiaDoTrabalho = CalInd(D(1)*M(5)-WD(7), Diario);
Serie FesBrasil.Finados = CalInd(D(1)*M(11)-WD(7), Diario);
Serie FesBrasil.IndependenciaDoBrasil = CalInd(D(7)*M(9)-WD(7), Diario);
Serie FesBrasil.NSAparecida = CalInd(D(12)*M(10)-WD(7), Diario);
Serie FesBrasil.ProclamacaoDaRepublica = CalInd(D(15)*M(11)-WD(7), Diario);
Serie FesBrasil.Tiradentes = CalInd(D(21)*M(4)-WD(7), Diario);
TimeSet FesBrasilSaoPaulo =
(
SerTms(FesSaoPaulo.FundacaoDeSaoPaulo) +
SerTms(FesSaoPaulo.RevolucaoDeSaoPaulo) +
SerTms(FesBrasil.Natal_Common) +
SerTms(FesBrasil.Natal_Escalon_PreAnoNovo_Common) +
SerTms(FesBrasil.Natal_PreSolo24_Common) +
SerTms(FesBrasil.Natal_PulsoDomingoEntre26y30_Common) +
SerTms(FesBrasil.Natal_PulsoSabadoEntre26y30_Common) +
SerTms(FesBrasil.Ano_Novo_Common) +
SerTms(FesBrasil.Ano_Novo_Pre_Common) +
SerTms(FesBrasil.Paixao_Common) +
SerTms(FesBrasil.CarnavalEsp) +
SerTms(FesBrasil.Carnaval_EscalonNeg) +
SerTms((0.1+0.1*B+0.1*B2+0.1*B3+0.1*B4):FesBrasil.Carnaval_Pulsos) +
SerTms(FesBrasil.Pre_CorpusChristi) +
SerTms(FesBrasil.CorpusChristi) +
SerTms(FesBrasil.DiaDoTrabalho) +
SerTms(FesBrasil.Finados) +
SerTms(FesBrasil.IndependenciaDoBrasil) +
SerTms(FesBrasil.NSAparecida) +
SerTms(FesBrasil.ProclamacaoDaRepublica) +
SerTms(FesBrasil.Tiradentes)
);
TimeSet FesEspeciales =
(
SerTms(FesBrasil.CarnavalEsp) +
SerTms(FesBrasil.Carnaval_EscalonNeg) +
SerTms((0.1+0.1*B+0.1*B2+0.1*B3+0.1*B4):FesBrasil.Carnaval_Pulsos) +
SerTms(FesBrasil.Finados)
);
TimeSet FesNoEspeciales = FesBrasilSaoPaulo-FesEspeciales;
TimeSet FesSab = FesNoEspeciales*WD(6);
TimeSet FesPuenteVie = FesNoEspeciales*WD(5);
TimeSet FesPuenteJue = FesNoEspeciales*WD(4);
TimeSet FesPuenteMar = FesNoEspeciales*WD(2);
TimeSet FesPrePuenteVie = Succ(FesPuenteVie, -1);
TimeSet FesPrePuenteJue = Succ(FesPuenteJue, -1);
TimeSet FesPrePuenteMar = Succ(FesPuenteMar, -4);
TimeSet FesPosPuenteVie = Succ(FesPuenteVie, 3);
TimeSet FesPosPuenteJue = Succ(FesPuenteJue, 4);
TimeSet FesPosPuenteMar = Succ(FesPuenteMar, 1);
The tricky part (in my Jul 23 2004 version of tol) comes when
trying to visualise the FesPrePuenteVie TimeSet or when
computing and visualising another one like:
TimeSet Succ(FesNoEspeciales, -1, Diario);
From my point of view Succ should be modifying the rule FesNoEspeciales uses for
computation so as to be as fast for visualising as this is.
Is this so?
Is there an efficiency problem?
Thanks !
Jose Ignacio
Change History (4)
comment:1 Changed 19 years ago by
Owner: | changed from danirus to Víctor de Buen Remiro |
---|
comment:2 Changed 19 years ago by
Status: | new → assigned |
---|
comment:3 Changed 19 years ago by
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Bug has been fixed.
More information in
http://cvs.tol-project.org/viewcvs.cgi/toldoc/Time/TD-diseño.pdf
comment:4 Changed 18 years ago by
bug_file_loc: | → http://cvs.tol-project.org/viewcvs.cgi/tol_tests/tol/Bugzilla/bug_000167 |
---|
Pardon to have forgotten this bug.
We are working about it
Thanks to report it