Opened 14 years ago
Closed 14 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 14 years ago by
| Status: | new → accepted |
|---|
comment:2 Changed 14 years ago by
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 14 years ago by
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 14 years ago by
| Resolution: | → fixed |
|---|---|
| Status: | accepted → closed |
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.

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