close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 13 years ago

Closed 13 years ago

#1463 closed defect (fixed)

Lentitud del inspector explorando instancias

Reported by: Pedro Gea Owned by: Jorge
Priority: highest Milestone: Mantainance
Component: Interface Version: 3.1
Severity: blocker Keywords:
Cc:

Description

En la versión 3.1 se aprecia una mayor lentitud en la inspección de instancias e incluso la obtención de errores.

Para comprobarlo puede usarse el siguiente código de ejemplo:

Class @Ej {
  Text _.name
};
Set For(1, 500, NameBlock (Real i) {
  Text name = "id"<<FormatReal(i, "03.0lf");
  @Ej ej = [[ 
    Text _.name = name
  ]];
  PutName(name, ej)
});

Después de compilarlo inténtese explorar el conjunto.

Change History (4)

comment:1 Changed 13 years ago by Jorge

Status: newaccepted
tol::console eval {
  Set s1 = For( 1, 1000, Text( Real k ) { Text "item"<<k } );
  Set s2 = For( 1, 1000, Set( Real k ) { Set [[ k ]] } );
  Set s3 = For( 1, 1000, NameBlock( Real k ) { NameBlock [[ Real id = k ]] } );
  Class @Ej { Text _.name };
  Set s4 = Do For(1, 1000, NameBlock ( Real k ) {
    Text name = "id"<<k;
    @Ej ej = [[ 
      Text _.name = name
    ]];
    PutName( name, ej )
  });
}

proc emptyProc { args } { }

puts [ time {::tol::forallchild {Set s1} emptyProc} 10 ]
puts [ time {::tol::forallchild {Set s2} emptyProc} 10 ]
puts [ time {::tol::forallchild {Set s3} emptyProc} 10 ]
puts [ time {::tol::forallchild {Set s4} emptyProc} 10 ]

produce

3433.7 microseconds per iteration
6187.7 microseconds per iteration
7097.7 microseconds per iteration
8159.7 microseconds per iteration

comment:2 Changed 13 years ago by Jorge

Con la versión 2.0.1 iba a la misma velocidad, así que los cambios están en tolbase:

3687.4 microseconds per iteration
6818.9 microseconds per iteration
7370.1 microseconds per iteration
9175.5 microseconds per iteration

comment:3 Changed 13 years ago by Jorge

Esto es lo que se hace de más para los conjuntos y nameblocks

    if {$grammar eq "Set"} {
      set icon_grammar [SubTypeImage [lindex $args 2]]
      set data [lreplace $data 9 9 $objRef]  
    } else {
      set data [lreplace $data 9 9 $objRef]  
      set classOf [Tol_ClassOfFromReference $objRef]
      set insCont [Tol_InstanceContentFromReference $objRef]
      if {$insCont ne ""} {
        set data [lreplace $data 3 3 [TrimContent $grammar $insCont]]
      } elseif {$classOf ne ""} {
        set data [lreplace $data 3 3 $classOf]
      }
      set objAddress [ tol::info address $objRef ]
      set icon_grammar [ ::ImageManager::getIconForInstance $objAddress ]
    }

comment:4 Changed 13 years ago by Pedro Gea

Resolution: fixed
Status: acceptedclosed

Citados erróneamente en: #1457

(In [4309]) fix #1457, los puts estaban relentizando, hay que tener cuidado con las trazas que se dejan. De todas formas se puede acelerar algo más.

(In [4310]) refs #1457, portando la solucion desde 3.1, hay que mencionar que este error se manifestaba solo en windows.

Note: See TracTickets for help on using tickets.