source: tol/doc/performance/TOLCleaningDic05/TOLCleaning_DIC_2005.lyx @ 83a1cc2

1941-docker-image-to-testdevel
Last change on this file since 83a1cc2 was 83a1cc2, checked in by Víctor de Buen <vdebuen@…>, 18 years ago

Unified document directory

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@21 be4846ae-f051-483a-831f-b64e7d08527f

  • Property mode set to 100644
File size: 31.2 KB
Line 
1#LyX 1.3 created this file. For more info see http://www.lyx.org/
2\lyxformat 221
3\textclass article
4\begin_preamble
5%\documentclass[spanish]{article}
6\usepackage{babel}
7\usepackage{a4wide}
8\usepackage{varioref}
9\usepackage{amssymb}
10\usepackage{latexsym}
11\usepackage{amssymb}
12\usepackage{amsmath}
13
14\usepackage{graphics}
15\usepackage{graphicx}
16\usepackage{ulem}
17\usepackage{color}
18\usepackage{multicol}
19\usepackage{longtable}
20
21%\usepackage{makeidx}
22\usepackage{hyperref}
23\makeindex
24
25\hypersetup{urlbordercolor=0 0 0,pdfborder=0 0 1 [3 2]}
26\end_preamble
27\language spanish
28\inputencoding auto
29\fontscheme default
30\graphics default
31\paperfontsize default
32\spacing single
33\papersize a4paper
34\paperpackage widemarginsa4
35\use_geometry 0
36\use_amsmath 0
37\use_natbib 0
38\use_numerical_citations 0
39\paperorientation portrait
40\secnumdepth 3
41\tocdepth 3
42\paragraph_separation indent
43\defskip medskip
44\quotes_language english
45\quotes_times 2
46\papercolumns 1
47\papersides 1
48\paperpagestyle default
49
50\layout Title
51
52Proceso de limpieza de TOL previo al desarrollo de OISS
53\layout Author
54
55Víctor de Buen
56\layout Abstract
57
58El propósito fundamental del presente proceso de limpieza de TOL es dejar
59 una versión de TOL algo más despejada de elementos estériles y confusos
60 así como prepararla para el desarrollo de sistemas que le den una mayor
61 agilidad y robustez a los proyectos desarrollados en TOL, de forma que
62 dé tiempo al equipo de desarrollo a diseñar e implementar un nuevo lenguaje
63 MOLE sin bloquear por ello ni a los analistas ni a los desarrolladores.
64\layout Section
65
66Objetivos
67\layout Standard
68
69En términos del código C++, el objetivo principal era más que nada disponer
70 los templates básicos adecuados para más adelante poder instanciar objetos
71 TOL serializables de forma indexada y probablemente utilizando memoria
72 externa, lo cual se consigue básicamente virtualizando los métodos principales
73 de los objetos Name, Description, Contens, etc.; y esa ha sido la principal
74 labor, afectando a la jerarquía de templates BRen*, BTmp*, BGraContens*,
75 BGraObject* y en general a todas las clases derivadas de BSyntaxObject.
76\layout Standard
77
78Sin embargo, aprovechando el tirón, se le ha dado un repasito general a
79 TOL haciendo buena parte de esa limpieza de la que tanto habíamos hablado,
80 eliminando campos superfluos e incorporándolos eventualmente en su lugar
81 correspondiente en la jerarquía de clases.
82 
83\layout Standard
84
85A las clases BSet, BTimeSerie y derivadas, BSerieGroup y BSerieTable también
86 se les ha dado un repaso importante pues son las que sustentan la mayor
87 parte de las operaciones de TOL.
88\layout Section
89
90Resultados
91\layout Standard
92
93Como efecto colateral se consigue que desaparezcan algunos errores en la
94 recompilación, especialmente de funciones TOL de usuario, y, dependiendo
95 de los procesos ejecutados, una disminución del consumo de memoria usada
96 por TOL desde un 20% hasta más del 90%, y un ligero aumento en velocidad,
97 que puede ser desde apenas perceptible hasta un 40%; lo cual en modo alguno
98 alguno justificarían el trabajo hecho, el cual cobra sentido sólo por el
99 hecho de conseguir una jerarquía de clases más limpia y potente.
100 
101\layout Standard
102
103El principal problema de memoria se debe a que los objetos no se borran
104 convenientemente a causa del lío que supone el tratamiento de las referencias
105 vía BList y BSet, las cuales llevan bastante mala vida, pues se manipulan
106 en exeso a veces, provocando interferencias entre ellas, además de las
107 llamadas directas a InNRefs y DecNRefs.
108 Se ha mejorado parcialmente esto devolvíéndose ahora bastante más memoria
109 que antes por lo que en algunas ocasiones, cuando se hacen procesos repetitivos
110 muy pesados, el ahorro de memoria puede ser brutal.
111\layout Standard
112
113Sin embargo, en el momento en el que se produzca cualquier pequeño desorden
114 en los procesos de destrucción se seguirán quedando objetos huérfanos de
115 lista que les pueda ordenar destruirse y por eso pasa lo que pasa.
116 Eso es realmente muy complicado de detectar sin tener casos de código TOL
117 sencillo que reproduzcan y aislen los problemas por lo que no se ha dedicado
118 apenas tiempo a ello aunque algo sí ha mejorado la situación.
119\layout Standard
120
121Además, este problema quedará salvado, o al menos paliado en gran medida
122 con el desarrollo de OISS, que está explicado en el documento OISS.pdf.
123\layout Standard
124
125Aprovechando las ventajas del diseño modificado, o simplemente porque venía
126 al paso, se han efectuado algunos otros pequeños cambios de menor alcance
127 como por ejemplo:
128\layout Itemize
129
130Los objetos de tipo autocontenido se declaraban internamente por referencia
131 mediante la instanciación de un objeto BRenContens<Any> apuntando al objeto
132 resultante de la parte izquierda del igual.
133 Esta filosofía lazzy es muy útil cuando los objetos referenciados son muy
134 grandes como pueden ser algunas matrices o conjuntos, pero al mismo tiempo
135 obliga a mantener en memoria todo el árbol de objetos necesarios para su
136 evaluación, lo cual puede ser que ocupe mucho más.
137 Ahora se dispone de otra clase BCopyContens<Any> que copia el contenido
138 del objeto y lo destruye en ese mismo momento liberando la memoria del
139 árbol de evaluación de forma temprana.
140 Este tipo de evaluación hungry se reserva a los objetos más bien pequeños
141 que en principio serán Real, Complex, Date, Polyn, Ratio y Text; aunque
142 habrá que estudiar cómo funciona mejor e incluso, ya para el nuevo MOLE,
143 se puede hacer parametrizable por el usuario si se observa que depende
144 mucho de la naturaleza del proyecto.
145 
146\layout Itemize
147
148Ya no se pueden modificar los objetos constantes del sistema.
149 Cuando se hacen asignaciones de constantes se crea una copia interna del
150 objeto con BCopyContens<Any> de forma que no se produzcan los efectos colateral
151es impredictibles y muy peligrosos a que nos tiene acostumbrados TOL.
152 En el siguiente ejemplo, XXX queda como [[1,2]] mientras que YYY y Empty
153 permanecen vacíos y la última línea no tiene ningún efecto salvo dar un
154 mensaje de error al usuario
155\layout LyX-Code
156
157Set XXX = Empty;
158\layout LyX-Code
159
160Set (XXX:=[[1,2]]);
161\layout LyX-Code
162
163Set YYY = Empty;
164\layout LyX-Code
165
166Set (Empty:=[[1,2,3]]);
167\layout Itemize
168
169Ya se pueden crear estructuras locales.
170 El problema era simplemente que la función FindLocal no estaba preparada
171 para buscar por Mode sino sólo por nombre y encontraba primero la función
172 asociada a la estructura que tiene tipo Code por lo que no se reconocía
173 como un Struct.
174 Lo único que hay que hacer es tomar la pila local y hacer la búsqueda ad-hoc
175 del Struct.
176\layout Itemize
177
178Los elementos de un conjunto S se pueden referenciar como S[x] donde x es
179 un objeto de tipo Real o de tipo Text.
180 Cuando x es una constante de texto necesariamente ha de comenzar por el
181 carácter comilla doble <
182\begin_inset Quotes erd
183\end_inset
184
185>, por lo que se puede hacer esa comprobación inicial para ahorrarse el
186 intento de evaluación de x como Real, ahorrando un tiempo que puede llegar
187 a ser importante en algunas circunstancias.
188\layout Itemize
189
190Los objetos TOL de usuario tienen ahora Description y Expression como funciones
191 separadas, pero sólo la descripción es modificable por el usuario mientras
192 que la expresión la rellenará TOL sólo cuando UnparseNodes sea cierta.
193 Cuando no hay descripción el usuario recibirá la expresión, si es que tiene.
194 La función Identify devuelve el primer texto no vacío de la lista Name(),
195 LocalName(), Expression(), Description().
196\layout Itemize
197
198El nombre local sólo existe en los objetos referenciantes BCopyContens<Any>,
199 BRenContens<Any>, BRenObject<Any>
200\layout Itemize
201
202En la función Frecuency se estaba dividiendo en una parte de más que luego
203 no se devolvía por lo que los análisis de frecuencias estaban incompletos.
204\layout Itemize
205
206En la función ARMAAutoCovarianzeVector había un acceso inválido de memoria
207 cuando no hay parte AR en un modelo y se solicita un número de autocovarianzas
208 menor o igual que el grado MA, lo cual puede dar lugar a caídas o comportamient
209os extraños de forma aleatoria e irreproducible.
210\layout Itemize
211
212En el AIA no se destruía la copia de la serie de residuos construida para
213 no modificar la serie pasada como argumento.
214 Esto no traía consecuencias en cuanto a las referencias pero sí que ocupaba
215 el espacio correspondiente al área de datos duplicada que nunca se devolvía.
216\layout Itemize
217
218Cada mensaje de error o de aviso llevará adjunto un número correlativo para
219 que el usuario pueda encontrar más facilmente el primero de ellos y seguirles
220 la pista más cómodamente.
221\layout Itemize
222
223Se han creado las variables TOL Real NError y Real NWarning que devuelven
224 el número de erores y avisos emitidos hasta el momento en la sesión, para
225 que los usuarios puedan comprobar en tiempo de ejecución si un proceso
226 está funcionando correctamente.
227\layout Itemize
228
229Se han hecho algunos cambios a nivel interno en modo de depuración para
230 facilitar la búsqueda de fallos de memoria creando una tabla en un fichero
231 de texto con los eventos de creación y destrucción de objetos de forma
232 que se pueda cargar en una base de datos para investigar lo que está ocurriendo
233 cuando algo falla.
234 Esto es tranasparente al usuario TOL y afecta sólo al desarrollador.
235\layout Itemize
236
237También pensando en el desarrollador y en el usuario avanzado se ha mejorado
238 la sintaxis y la ayuda en línea de los comandos de TOL Interactivo (tol.exe
239 -d ...)
240\begin_deeper
241\layout Itemize
242
243<tol expression> : ejecuta una expresión TOL
244\layout Itemize
245
246$HELP : muestra esta ayuda
247\layout Itemize
248
249$SYS <command> : ejecuta un comando del sistema operativo
250\layout Itemize
251
252$GRAMMAR : especifica la gramática por defecto
253\layout Itemize
254
255$DELETE : borra objetos TOL creados previamente
256\layout Itemize
257
258$DUMP : muestra un objeto TOL
259\layout Itemize
260
261$STATUS : muestra algunas estadísticas acerca del estado de TOL
262\layout Itemize
263
264$SHOW_CLASS_SIZES : muestra el tamaño de algunas clases C++ internas
265\layout Itemize
266
267$END : sale del modo interactivo de TOL
268\end_deeper
269\layout Subsection
270
271Robustez
272\layout Standard
273
274De momento se han probado a través de la VPN procesos, principalmente de
275 tipo pestimation.tol, de los SADD's almacenados en el CVS de Bayes, de proyectos
276 bastante variados
277\layout Enumerate
278
279Banco do Brasil
280\begin_deeper
281\layout Enumerate
282
283Test_BB_000_InitSADD: Sólo carga el SADD del proyecto y la lista de agencias
284 desde la base de datos
285\layout Enumerate
286
287Test_BB_001_ARIMATFEst: Modelo ARIMATF de la serie de Variación de efectivo
288 de una agencia
289\layout Enumerate
290
291Test_BB_002_ARIMAIdentif: Identificación de modelos ARIMA más probables
292 para la serie de Variación de Efectivo de una agencia
293\layout Enumerate
294
295Test_BB_003_ARIMASearch: Estimación de los modelos ARIMA alternativos más
296 probables para la serie de Variación de Efectivo de una agencia
297\layout Enumerate
298
299Test_BB_004_VARMA: Modelo modelo VARMA aproximado linealmente de la serie
300 de Variación de efectivo de un grupo de agencias
301\layout Enumerate
302
303Test_BB_005_SAM: Simulación del Saldo Autónomo Mínimo
304\end_deeper
305\layout Enumerate
306
307Cocacola
308\begin_deeper
309\layout Enumerate
310
311Estimación ARIMA de un producto
312\layout Enumerate
313
314Estimación bayesiana
315\end_deeper
316\layout Enumerate
317
318Voz de Galicia
319\begin_deeper
320\layout Enumerate
321
322Estimación de una serie global
323\layout Enumerate
324
325Estimación de un punto de venta
326\layout Enumerate
327
328Previsión
329\end_deeper
330\layout Enumerate
331
332Feda
333\begin_deeper
334\layout Enumerate
335
336Combinación de previsiones: Los resultados son idénticos pero utiliza 50
337 MB de RAM en la versión nueva y 80 MB en la vieja y tarda 369 segundos
338 en lugar de 690, con lo que los ahorros son del 47% en tiempo y del 38%
339 en memoria.
340\end_deeper
341\layout Standard
342
343Los resultados de la versión de desarrollo de limpieza DEV-VERSION son idénticos
344 a los de la versión CVS-20051220 que se ha tomado como referencia en todos
345 los casos.
346\layout Standard
347
348Sería necesario probar otros tipos de procesos, tanto de estimación de todos
349 los tipos, (VARMA, bayesianos, jerárquicos, ...), como de procesos que no
350 sean de modelización para estar seguros de que no hay errores de importancia
351 antes de subir los cambios al CVS.
352\layout Standard
353
354Yo veo en los proyectos que hay muchos programas TOL que podría probar,
355 pero no me atrevo para no fastidiar, por lo que es necesario que desde
356 los proyectos se seleccione una colección de procesos lo más variados que
357 sea posible e intentando que no sean demasiado pesados de forma gratuita,
358 para poder hacer muchas pruebas en el menor tiempo posible.
359 
360\layout Standard
361
362Con esta colección de procesos se creará una batería de tests que nos servirá
363 más adelante para probar de forma sistemática nuevas versiones de TOL,
364 o incluso el nuevo desarrollo de TOL, adaptando el código si es necesario,
365 pero con el mayor grado de compatibilidad que sea razonable conseguir.
366\layout Subsection
367
368Eficiencia
369\layout Standard
370
371Tomando como caso de comparación la estimación de modelos de agencia del
372 Banco do Brasil se han obtenido los siguientes resultados.
373\layout Standard
374
375
376\lang english
377
378\begin_inset Float figure
379placement htbp
380wide false
381collapsed false
382
383\layout Caption
384
385
386\lang english
387
388\begin_inset LatexCommand \label{tol-performance}
389
390\end_inset
391
392TOL performance
393\layout Standard
394\align center
395
396\lang english
397
398\begin_inset Graphics
399        filename C:/projects-c++/bayes/tol-project/toldoc/TOLCleaningDic05/tolperformance.eps
400        display color
401        scale 66.6
402        rotateOrigin center
403
404\end_inset
405
406
407\end_inset
408
409
410\layout Standard
411
412Se ha utilizado el tol.exe y se ha separado el proceso en módulos correspondiente
413s a los tests del Banco do Brasil por ser los que se han podido hacer en
414 local y en los que tiene sentido medir el tiempo de proceso, que está dominado
415 por la interconexión en el caso de acceder de forma remota por la VPN al
416 código TOL y/o la base de datos.
417 Las mediciones abarcan
418\layout Enumerate
419
420Cores: Cualquier instancia de cualquier clase heredada de BCore, lo cual
421 incluye todos los elementos del lenguaje, las listas, los árboles y otros
422 heredados de BObject que carecen normalmente de importancia relativa.
423 Estos han descendido notablemente al no heredar BText de BAtom y emplearse
424 muchas menos listas que antes ya que BSet ya no contiene una lista, ni
425 tampoco BSerieGroup ni BSerieTable.
426\layout Enumerate
427
428Objects: Objetos heredados de BSyntaxObject, es decir, los propiamente relaciona
429dos con el lenguaje.
430 Estos han descendido porque se borran los objetos de los tipos pequeños
431 con el operdor de declaración y sobre todo porque hay menos errores que
432 dejen referencias de más y se borran más objetos innecesarios.
433\layout Enumerate
434
435Kb: Memoria adjudicada al proceso por el sistema operativo Windows una vez
436 ejecutado el test restándole la correspondiente a la inicialización del
437 proyecto SADD (Test BB000 InitSADD) para calcular el consumo debido exclusivame
438nte a cada test.
439 Como estos se ejecutan en una pila local (o sea entre llaves {}), y devolviendo
440 copia de los resultados para la estadística de tests, TOL debería devolver
441 prácticamente toda la memoria.
442 Aunque tiene cierto componente aleatorio pues el S.O.
443 puede otorgar más de lo solicitado, esto no supone demasiada variación.
444 El ahorro depende mucho del tipo de proceso que ejecuta el test ya que
445 el TOL del CVS puede perder más o menos memoria según las operaciones que
446 se realizan.
447\layout Enumerate
448
449Time Elapsed: Tiempo empleado por cada proceso medido en segundos.
450 En algunos procesos no se mejora prácticamente nada pero en otros se gana
451 un 30% en velocidad y en otros que se han probado aparte mucho más, especialmen
452te cuando la memoria consumida desciende mucho y se evita el uso de memoria
453 virtual.
454\layout Section
455
456Resumen de los cambios introducidos en el código
457\layout Standard
458
459Los cambios afectan a 87 de los 267 ficheros *.c, *.cpp; *.
460 h; *.hpp que componen el proyecto TOL y afectan a las áreas más importantes
461 del lenguaje aunque también hay algunos cambios menores que se han hecho
462 necesarios o que venían al paso.
463\layout Standard
464
465A continuación se detallan por categorías conceptuales los cambios realizados
466 seguidos de los ficheros afectados por cada uno o a veces de forma conjunta
467 para un grupo de cambios consecutivos íntimamente relacionados entre sí.
468\layout Standard
469
470(Aún faltan de reportar los últimos cambios, para ello tengo que hacer un
471 diff en local del TOL del CVS actual con la versión de desarrollo)
472\layout Subsection
473
474Basic objects related changes
475\layout Enumerate
476
477Virtual methods IsDeadObj and System are been downloaded from BSyntaxObject
478 to this level to allow a best memory tracing
479\begin_deeper
480\layout Enumerate
481
482bbasic/tol_batom.h
483\end_deeper
484\layout Enumerate
485
486Changed memory trace handling
487\begin_deeper
488\layout Enumerate
489
490bbasic/atm.cpp
491\end_deeper
492\layout Enumerate
493
494Constant factor 2 for Add reallocation replaced by ReallocMarginFactor defined
495 as 1.2
496\begin_deeper
497\layout Enumerate
498
499bbasic/tol_barray.h :
500\end_deeper
501\layout Enumerate
502
503BText::defectSize_ = 0 instead of old unused value of 64, due to constant
504 1 was used
505\begin_deeper
506\layout Enumerate
507
508bbasic/txt.cpp :
509\end_deeper
510\layout Enumerate
511
512Now BText doesn't inherites from BAtom.
513 To insert strings in lists BObject will be used.
514\begin_deeper
515\layout Enumerate
516
517bbasic/tol_btext.h
518\layout Enumerate
519
520bbasic/txt.cpp
521\layout Enumerate
522
523bbasic/tol_bdir.h
524\layout Enumerate
525
526bbasic/dir.cpp
527\layout Enumerate
528
529bbasic/dirtext.cpp
530\layout Enumerate
531
532bbasic/tol_bopt.h
533\layout Enumerate
534
535bbasic/opt.cpp
536\layout Enumerate
537
538bbasic/opttext.cpp
539\layout Enumerate
540
541bparser/par.cpp
542\end_deeper
543\layout Enumerate
544
545New access functions to miliseconds and string formated of process elapsed
546 timebbasic/tol_btimer.h
547\begin_deeper
548\layout Enumerate
549
550bbasic/timer.cpp
551\end_deeper
552\layout Subsection
553
554Math objects related changes
555\layout Enumerate
556
557Frequency(...) must divide in just n parts instead of n+1
558\begin_deeper
559\layout Enumerate
560
561bmath/bstat/stat.cpp
562\end_deeper
563\layout Enumerate
564
565Fixed invalid memory access in ARMAAutoCovarianzeVector function, when no
566 AR is defined and number of required autocovariances is less or equal than
567 MA degree that could cause random secondary effects, even system crashes.
568\begin_deeper
569\layout Enumerate
570
571bmath/bstat/barma.cpp
572\end_deeper
573\layout Subsection
574
575Kernel-grammar related changes
576\layout Enumerate
577
578BField inherites from BObject instead of BSyntaxObject
579\begin_deeper
580\layout Enumerate
581
582btol/bgrammar/tol_bstruct.h
583\end_deeper
584\layout Enumerate
585
586New IsAutoContens() method of grammars to be used in futurebtol/bgrammar/str.cpp
587 :
588\begin_deeper
589\layout Enumerate
590
591btol/bgrammar/tol_bgrammar.h
592\layout Enumerate
593
594btol/bgrammar/graacc.cpp
595\end_deeper
596\layout Enumerate
597
598Unparsing is used just in Evaluate(BText expression) instead of Evaluate(BTree
599 tree) to savememory and process time.
600\begin_deeper
601\layout Enumerate
602
603btol/bgrammar/graimp.cpp
604\end_deeper
605\layout Subsection
606
607Syntax-hierarchy related changes
608\layout Enumerate
609
610Unused class BSyntaxImage and related functions has been eliminated
611\begin_deeper
612\layout Enumerate
613
614btol/bgrammar/tol_bsyntax.h
615\layout Enumerate
616
617btol/bgrammar/syn.cpp
618\layout Enumerate
619
620btol/bgrammar/tol_bgrammar.h
621\layout Enumerate
622
623btol/bgrammar/graacc.cpp
624\layout Enumerate
625
626btol/bgrammar/tol_bmethod.h
627\layout Enumerate
628
629btol/bgrammar/met.cpp
630\end_deeper
631\layout Enumerate
632
633Boolean members system_, released_, calculated_, and calculating_ are compacted
634 in a protected bit-struct flags_ member at BSyntaxObject using just a byte
635 all together
636\begin_deeper
637\layout Enumerate
638
639btol/bgrammar/tol_bsyntax.h
640\layout Enumerate
641
642btol/bgrammar/tol_bgencon.h
643\layout Enumerate
644
645btol/bgrammar/tol_bgenobj.h
646\layout Enumerate
647
648btol/lang/language.cpp
649\end_deeper
650\layout Enumerate
651
652BSyntaxObject Mode constants are moved to tol_bsyntax.h
653\begin_deeper
654\layout Enumerate
655
656tol_bcommon.h,
657\layout Enumerate
658
659btol/bgrammar/tol_bsyntax.h
660\layout Enumerate
661
662btol/bgrammar/syn.cpp
663\end_deeper
664\layout Enumerate
665
666BSyntaxObject::flags_.system_ is set to true for all BSyntaxObjects until
667 TOLHasBeenInitialized() return true, when InitGrammars ends
668\begin_deeper
669\layout Enumerate
670
671btol/bgrammar/tol_bsyntax.h
672\layout Enumerate
673
674lang/language.cpp
675\end_deeper
676\layout Enumerate
677
678Old BSyntaxObject tolPath_ is restricted to BSetFromFile to be used in new
679 method ParentPath() to access to path of the file where the object was
680 created in.
681 New BSynObjOptInfo class to optional storement of name_, description_,
682 localName_ and parent_ in BSyntaxObject just when needed.
683 Changed memory trace handling
684\begin_deeper
685\layout Enumerate
686
687btol/bgrammar/tol_bsyntax.h
688\layout Enumerate
689
690btol/bgrammar/syn.cpp
691\end_deeper
692\layout Enumerate
693
694Class BRenamed is eliminated, BRenamedGen is renamed as BRefObject.
695 In BTmpObject args_ member is now a BList* instead of a BSet and a short
696 card_, and BSyntaxObject** array_ are used to accelerate accesses to arguments.
697 
698\layout Enumerate
699
700New template classes has been inserted in *Contens* template hierarchy.
701 A new template BGraContensBase<Any> without contens_ to save memory when
702 is this member is not needed and allowing virtual access to it.
703 A
704\layout Enumerate
705
706New template BGraContensFND<Any,Name_,Description_> usefull to returned
707 objects by built-in functions saving memory in each instance.
708 
709\layout Enumerate
710
711A new temlpate BCopyContens<Any> to use instead of BRenContens<Any> to low
712 size types as Real, Complex, Date, Text, Polyn, Ration.
713 This objects copy the contens of referenced object and try to destroy it.
714 If isn't posible, destroying will be delayed to the live end of encapsulating
715 object.
716\layout Enumerate
717
718BGraConstant<Any> modifications of name, description or value are disabled
719\layout Enumerate
720
721BRenContens<Any>::New(const BText& name, BSyntaxObject* obj) method will
722 call BCopyContens<Any>::New when obj were a System variable to avoid involuntar
723y constant objects modifications
724\begin_deeper
725\layout Enumerate
726
727btol/bgrammar/tol_bgentmp.h
728\layout Enumerate
729
730btol/bgrammar/tol_bgencon.h
731\layout Enumerate
732
733btol/bgrammar/tol_bgenobj.h
734\layout Enumerate
735
736lang/language.cpp
737\end_deeper
738\layout Enumerate
739
740Access to BSet BTmpObject<Any>::Args() must be replaced by BList* ArgList()
741 or DupArgList()
742\begin_deeper
743\layout Enumerate
744
745btol
746\backslash
747matrix_type
748\backslash
749matgra.cpp
750\layout Enumerate
751
752btol
753\backslash
754set_type
755\backslash
756setgra.cpp
757\layout Enumerate
758
759btol
760\backslash
761bgrammar
762\backslash
763tol_bgentmp.h
764\end_deeper
765\layout Enumerate
766
767Access to BSet BTmpObject<Any>::Args().Card() must be replaced by NumArgs()
768\begin_deeper
769\layout Enumerate
770
771btol
772\backslash
773bmonte
774\backslash
775mc-integrator.cpp
776\layout Enumerate
777
778btol
779\backslash
780matrix_type
781\backslash
782matgra.cpp
783\layout Enumerate
784
785btol
786\backslash
787real_type
788\backslash
789armseval.cpp
790\layout Enumerate
791
792btol
793\backslash
794real_type
795\backslash
796datgrapr.cpp
797\layout Enumerate
798
799btol
800\backslash
801real_type
802\backslash
803datgrast.cpp
804\layout Enumerate
805
806btol
807\backslash
808real_type
809\backslash
810datgrav.cpp
811\layout Enumerate
812
813btol
814\backslash
815set_type
816\backslash
817setgra.cpp
818\layout Enumerate
819
820btol
821\backslash
822timeset_type
823\backslash
824tmsgrav.cpp
825\layout Enumerate
826
827btol
828\backslash
829bgrammar
830\backslash
831tol_bgentmp.h:
832\layout Enumerate
833
834lang
835\backslash
836language.cpp
837\end_deeper
838\layout Enumerate
839
840Access to BSyntaxObject or inherited boolean members system_, released_,
841 calculated_, and calculating_ must be changed to flags_.* or BSyntaxObject::Put*
842 functions
843\begin_deeper
844\layout Enumerate
845
846btol
847\backslash
848bmonte
849\backslash
850mc-integrator.cpp
851\layout Enumerate
852
853btol
854\backslash
855cseries_type
856\backslash
857ctsrgra.cpp
858\layout Enumerate
859
860btol
861\backslash
862matrix_type
863\backslash
864multimin.cpp
865\layout Enumerate
866
867btol
868\backslash
869serie_type
870\backslash
871tsrgra.cpp
872\layout Enumerate
873
874btol
875\backslash
876set_type
877\backslash
878setgra.cpp
879\layout Enumerate
880
881btol
882\backslash
883bgrammar
884\backslash
885tol_bgencon.h
886\layout Enumerate
887
888btol
889\backslash
890bgrammar
891\backslash
892tol_bgenobj.h
893\layout Enumerate
894
895btol
896\backslash
897bgrammar
898\backslash
899tol_bsyntax.h
900\layout Enumerate
901
902btol
903\backslash
904set_type
905\backslash
906tol_bsetgra.h:
907\layout Enumerate
908
909lang
910\backslash
911language.cpp
912\end_deeper
913\layout Enumerate
914
915BSystem* objects that shouldn't be system constants are changed to BUser*
916 to inherite from BGraContens<Any> instead of undeletable system class BGraConst
917ant<Any>
918\begin_deeper
919\layout Enumerate
920
921btol
922\backslash
923matrix_type
924\backslash
925matgra.cpp
926\layout Enumerate
927
928btol
929\backslash
930real_type
931\backslash
932datgra.cpp
933\layout Enumerate
934
935btol
936\backslash
937real_type
938\backslash
939datgsrst.cpp
940\layout Enumerate
941
942btol
943\backslash
944text_type
945\backslash
946txtgra.cpp
947\layout Enumerate
948
949lang
950\backslash
951language.cpp
952\end_deeper
953\layout Subsection
954
955TOL Functions and Code-type related changes
956\layout Enumerate
957
958New BOperator::AddSystemOperator() to control different creating processes
959 of built-in and user functions that were never deleted internally
960\layout Enumerate
961
962New bool BuildingMethod() function to special treatment of overloading of
963 method's functions
964\begin_deeper
965\layout Enumerate
966
967btol/bgrammar/tol_boper.h
968\layout Enumerate
969
970btol/bgrammar/opr.cpp
971\end_deeper
972\layout Enumerate
973
974Fixed forbidden accesses to code->Contens() for non BUSerFunction objects
975\layout Enumerate
976
977When BuildingMethod() is false Mode() must be equal to so.Mode() to match
978\begin_deeper
979\layout Enumerate
980
981btol/bgrammar/txthash.cpp :
982\layout Enumerate
983
984btol/bgrammar/met.cpp :
985\end_deeper
986\layout Enumerate
987
988Internal BCode::operator_ is changed from BUserFunction* to BStandardOperator*
989\layout Enumerate
990
991btol/code_type/tol_bcodgra.h :
992\layout Enumerate
993
994BUserFunCode::Mode() is changed to BOBJECTMODE instead of BUSERFUNMODE that
995 is reserved to internal operators and unused class BCodeCreator has been
996 eliminated
997\begin_deeper
998\layout Enumerate
999
1000btol/code_type/tol_bcode.h
1001\layout Enumerate
1002
1003btol/code_type/cod.cpp
1004\end_deeper
1005\layout Subsection
1006
1007Set-type related changes
1008\layout Enumerate
1009
1010At BSet class BList* element_ is eliminated.
1011 
1012\layout Enumerate
1013
1014When a list is needed a copy is available through ToList().
1015 
1016\layout Enumerate
1017
1018Access to BSet BTmpObject<Any>::Args() must be replaced by BList* ArgList()
1019 or DupArgList().
1020 New class BGraContensFNDSet<BSet, Name_, Description_> inherited from BGraConte
1021nsFND<Any,Name_,Description_> to allow special constructors of bulit-in
1022 functions returned sets.
1023 
1024\layout Enumerate
1025
1026BSet constructor from BList* and operator= to BList* are eliminated to replace
1027 in this case by PutElement or RobElement.
1028 
1029\layout Enumerate
1030
1031Allocation methods: DeleteBuffer() method is renamed as Delete().
1032 ReallocBuffer is renamed as Realloc and protected and is added a new protected
1033 Alloc method and the only one public will be PrepareStore, in order to
1034 avoid invalid memory accesses.
1035\begin_deeper
1036\layout Enumerate
1037
1038btol
1039\backslash
1040bdb
1041\backslash
1042bdb.cpp
1043\layout Enumerate
1044
1045btol
1046\backslash
1047bdb
1048\backslash
1049bdspool.cpp
1050\layout Enumerate
1051
1052btol
1053\backslash
1054bgrammar
1055\backslash
1056graimp.cpp
1057\layout Enumerate
1058
1059btol
1060\backslash
1061bgrammar
1062\backslash
1063spfuninst.cpp
1064\layout Enumerate
1065
1066btol
1067\backslash
1068bmodel
1069\backslash
1070aia.cpp
1071\layout Enumerate
1072
1073btol
1074\backslash
1075bmodel
1076\backslash
1077estim.cpp
1078\layout Enumerate
1079
1080btol
1081\backslash
1082bmodel
1083\backslash
1084foread.cpp
1085\layout Enumerate
1086
1087btol
1088\backslash
1089bmodel
1090\backslash
1091modcalc.cpp
1092\layout Enumerate
1093
1094btol
1095\backslash
1096bmodel
1097\backslash
1098model.cpp
1099\layout Enumerate
1100
1101btol
1102\backslash
1103bmonte
1104\backslash
1105mc-integrator.cpp
1106\layout Enumerate
1107
1108btol
1109\backslash
1110matrix_type
1111\backslash
1112matgra.cpp
1113\layout Enumerate
1114
1115btol
1116\backslash
1117matrix_type
1118\backslash
1119multimin.cpp
1120\layout Enumerate
1121
1122btol
1123\backslash
1124polynomial_type
1125\backslash
1126polgra.cpp
1127\layout Enumerate
1128
1129btol
1130\backslash
1131real_type
1132\backslash
1133datgrast.cpp
1134\layout Enumerate
1135
1136btol
1137\backslash
1138set_type
1139\backslash
1140set.cpp
1141\layout Enumerate
1142
1143btol
1144\backslash
1145set_type
1146\backslash
1147setgra.cpp
1148\layout Enumerate
1149
1150btol
1151\backslash
1152set_type
1153\backslash
1154tol_bset.h
1155\layout Enumerate
1156
1157btol
1158\backslash
1159text_type
1160\backslash
1161txtgra.cpp
1162\layout Enumerate
1163
1164lang
1165\backslash
1166language.cpp
1167\end_deeper
1168\layout Subsection
1169
1170Real-type related changes
1171\layout Enumerate
1172
1173New controls about number of errors and warnings exported to TOL user
1174\begin_deeper
1175\layout Enumerate
1176
1177btol/real_type/datgra.cpp
1178\layout Enumerate
1179
1180bbasic/out.cpp
1181\end_deeper
1182\layout Subsection
1183
1184Complex-type related changes
1185\layout Enumerate
1186
1187BCmpConstant* i_ is changed to BParamCmp
1188\begin_deeper
1189\layout Enumerate
1190
1191btol/complex_type/cmpgra.cpp
1192\end_deeper
1193\layout Subsection
1194
1195Serie-type related changes
1196\layout Enumerate
1197
1198Dating_->nRefs_ is not touched by BTimeSerie because is non needed feature.
1199 Unused hashDat_ member has been eliminated
1200\begin_deeper
1201\layout Enumerate
1202
1203btol/serie_type/tol_btmser.h
1204\layout Enumerate
1205
1206btol/serie_type/tsrgra.cpp
1207\end_deeper
1208\layout Enumerate
1209
1210BData data_ is now really protected eliminating GetDataBuffer() access.
1211 New BTimeSerie member functions PutBufDat to change a dat, or Realloc,
1212 Alloc and Delete to manage memory
1213\begin_deeper
1214\layout Enumerate
1215
1216btol
1217\backslash
1218bdb
1219\backslash
1220bdb.cpp
1221\layout Enumerate
1222
1223btol
1224\backslash
1225bdb
1226\backslash
1227bdspool.cpp
1228\layout Enumerate
1229
1230btol
1231\backslash
1232bmodel
1233\backslash
1234modprev.cpp
1235\layout Enumerate
1236
1237btol
1238\backslash
1239serie_type
1240\backslash
1241srg.cpp
1242\layout Enumerate
1243
1244btol
1245\backslash
1246serie_type
1247\backslash
1248tsr.cpp:
1249\layout Enumerate
1250
1251btol
1252\backslash
1253serie_type
1254\backslash
1255tsrgra.cpp:
1256\layout Enumerate
1257
1258btol
1259\backslash
1260serie_type
1261\backslash
1262tsrgrav.cpp:
1263\layout Enumerate
1264
1265btol
1266\backslash
1267serie_type
1268\backslash
1269tol_btmser.h:
1270\layout Enumerate
1271
1272btol
1273\backslash
1274serie_type
1275\backslash
1276tol_btsrgrp.h
1277\layout Enumerate
1278
1279btol
1280\backslash
1281set_type
1282\backslash
1283setgra.cpp
1284\end_deeper
1285\layout Enumerate
1286
1287New BData class inherited from BArray<BDat> to control Time Series used
1288 volume
1289\begin_deeper
1290\layout Enumerate
1291
1292bmath/mathobjects/tol_bdat.h
1293\layout Enumerate
1294
1295bmath/mathobjects/dat.cpp
1296\end_deeper
1297\layout Enumerate
1298
1299BSerieGroup and BSerieTable use now a BArray<BUserTimeSerie*> instead of
1300 a BSet to store Series in order to avoid secondary effects of references
1301 over them.
1302 
1303\layout Enumerate
1304
1305Now the only one creator for BSerieGroup and BSerieTable has no arguments.
1306 Then you can add a Serie, a BList*, a BSet or another BSerieGroup or BSerieTabl
1307e.
1308 After you can use BSerieGroup to prepare operations between series or test
1309 dating and date bounds of a collection of series or you can fill a BSerieTable
1310 with data from collected series.
1311\begin_deeper
1312\layout Enumerate
1313
1314btol
1315\backslash
1316bdb
1317\backslash
1318bdspool.cpp
1319\layout Enumerate
1320
1321btol
1322\backslash
1323bmodel
1324\backslash
1325estim.cpp
1326\layout Enumerate
1327
1328btol
1329\backslash
1330bmodel
1331\backslash
1332modcalc.cpp
1333\layout Enumerate
1334
1335btol
1336\backslash
1337bmodel
1338\backslash
1339tol_bmodel.h
1340\layout Enumerate
1341
1342btol
1343\backslash
1344matrix_type
1345\backslash
1346matgra.cpp
1347\layout Enumerate
1348
1349btol
1350\backslash
1351real_type
1352\backslash
1353datgra.cpp
1354\layout Enumerate
1355
1356btol
1357\backslash
1358real_type
1359\backslash
1360datgsrst.cpp
1361\layout Enumerate
1362
1363btol
1364\backslash
1365serie_type
1366\backslash
1367srg.cpp
1368\layout Enumerate
1369
1370btol
1371\backslash
1372serie_type
1373\backslash
1374tol_btsrgrp.h
1375\layout Enumerate
1376
1377btol
1378\backslash
1379serie_type
1380\backslash
1381tsrgrai.cpp
1382\layout Enumerate
1383
1384btol
1385\backslash
1386text_type
1387\backslash
1388txtgra.cpp
1389\layout Enumerate
1390
1391lang
1392\backslash
1393language.cpp
1394\end_deeper
1395\layout Enumerate
1396
1397BList* outLst_ and inLst_ are eliminated from BModel to apply new BSerieTable
1398 advantages
1399\begin_deeper
1400\layout Enumerate
1401
1402btol/bmodel/foread.cpp
1403\layout Enumerate
1404
1405btol/bmodel/modcalc.cpp
1406\layout Enumerate
1407
1408btol/bmodel/model.cpp
1409\layout Enumerate
1410
1411btol/bmodel/tol_bmodel.h
1412\end_deeper
1413\layout Subsection
1414
1415Console related changes
1416\layout Enumerate
1417
1418Revisited commands and user help for interactive console mode of tol.exe
1419\begin_deeper
1420\layout Enumerate
1421
1422lang/language.cpp
1423\the_end
Note: See TracBrowser for help on using the repository browser.