> > >CLEAR ALL >CLEAR >SET procedure TO Common_utility.prg >PRIVATE lcOutFile >lcOutFile= [Test_memory_create_destroy_] + subs(version(),16,1) + [.TXT] >SET ALTERNATE TO &lcOutFile >SET ALTERNATE ON > >? 'Source Generated by Speed.prg at ' + TRANSFORM(DATETIME()) >? 'Source: ', 'Test_memory_create_destroy.PRG', VERSION() >? 'Run Date: '+ TTOC( DATETIME()) >#DEFINE cnNumObj 1 >LOCAL i, lnTime1, lnTime2, lnTime3, nMem1, nMem2 >lnTime1=SECONDS() >lnTime2=SECONDS() >lnTime3=SECONDS() >nMem1=INT(VAL(SYS(1016))) >nMem2=INT(VAL(SYS(1016))) >? 'Col 1: Number of Objects' >? 'Col 2: Object Class' >? 'Col 3: Memory required' >? 'Col 4: Seconds to create ' + ALLTRIM(STR(cnNumObj,5)) + ' objects' >? 'Col 5: Seconds to destroy '+ ALLTRIM(STR(cnNumObj,5)) + ' objects' >? 'Col 6: Tot time, Col(5)+Col(4)' > >? PADR('Num',5), PADR('Class',20), PADL('Memory',10), ; > PADL('Create',10), PADL('Destroy',10), PADL('Total',10) >? PADR('===',5), PADR('=====',20), PADL('======',10), ; > PADL('======',10), PADL('=======',10), PADL('=====',10) >=LogFunc('Age') >#UNDEF cnNumObj >#DEFINE cnNumObj 100 >=LogFunc('Age') >*!* =LogFunc('MyColumnSub1') >*!* =LogFunc('MyComboBoxSub1') >*!* =LogFunc('MyCommandButtonSub1') >*!* =LogFunc('MyCommandGroupSub1') >*!* =LogFunc('MyContainerSub1') >*!* =LogFunc('MyControlSub1') >*!* =LogFunc('MyCursorSub1') >*!* =LogFunc('MyCustomSub1') >*!* =LogFunc('MyDataenvironmentSub1') >*!* =LogFunc('MyEditBoxSub1') >*!* =LogFunc('MyFormSub1') >*!* =LogFunc('MyFormSetSub1') >*!* =LogFunc('MyFormSetSub2') >*!* =LogFunc('MyGridSub1') >*!* =LogFunc('MyHeaderSub1') >*!* =LogFunc('MyImageSub1') >*!* =LogFunc('MyLabelSub1') >*!* =LogFunc('MyLineSub1') >*!* =LogFunc('MyListBoxSub1') >*!* =LogFunc('MyOptionButtonSub1') >*!* =LogFunc('MyOptionGroupSub1') >*!* =LogFunc('MyPageSub1') >*!* =LogFunc('MyPageFrameSub1') >*!* =LogFunc('MyRelationSub1') >*!* =LogFunc('MyRelationSub2') >*!* =LogFunc('MySeparatorSub1') >*!* =LogFunc('MySessionSub1') >*!* =LogFunc('MyShapeSub1') >*!* =LogFunc('MySpinnerSub1') >*!* =LogFunc('MyTextBoxSub1') >*!* =LogFunc('MyTimerSub1') >*!* =LogFunc('MyToolBarSub1') >*!* =EmptyTest('Empty') > >******************************** >FUNCTION LogFunc(tcClass) > >#IFDEF DOSYS1104 > SYS(1104) >#ENDIF > >WAIT WINDOW NOWAIT PADL(tcClass,20) >DIMENSION aBin[cnNumObj] >nMem1=INT(VAL(SYS(1016))) >lnTime1=SECONDS() >FOR i=1 TO cnNumObj > aBin[i]=CREATE(tcClass) >ENDFOR >lnTime2=SECONDS() >nMem2=INT(VAL(SYS(1016))) >RELEASE aBin >lnTime3=SECONDS() >SET ALTERNATE TO &lcOutFile ADDITIVE >SET ALTERNATE ON >? PADR(cnNumObj,5), PADR(tcClass,20), PADL(nMem2-nMem1,10), ; > PADL(lnTime2-lnTime1,10), PADL(lnTime3-lnTime2,10), PADL(lnTime3-lnTime1,10) >SET ALTERNATE TO >SET ALTERNATE OFF > >****************** > >FUNCTION EmptyTest(tcClass) >#IFDEF DOSYS1104 > SYS(1104) >#ENDIF >#IFDEF BINDEVENTTEST > loObjectToBindTo = CreateObject("MycusHandler1") >#ENDIF >WAIT WINDOW NOWAIT PADL(tcClass,20) >DIMENSION aBin[cnNumObj] >nMem1=INT(VAL(SYS(1016))) >lnTime1=SECONDS() >FOR i=1 TO cnNumObj > aBin[i]=CREATE(tcClass) > #IFDEF ADDPROPERTYTEST > AddProperty(aBin[i],"Prop1") > #ENDIF >ENDFOR >lnTime2=SECONDS() >nMem2=INT(VAL(SYS(1016))) >RELEASE aBin >lnTime3=SECONDS() >SET ALTERNATE TO &lcOutFile ADDITIVE >SET ALTERNATE ON >? PADR(cnNumObj,5), PADR(tcClass,20), PADL(nMem2-nMem1,10), ; > PADL(lnTime2-lnTime1,10), PADL(lnTime3-lnTime2,10), PADL(lnTime3-lnTime1,10) >SET ALTERNATE TO >SET ALTERNATE OFF >ENDFUNC > >***************** > >DEFINE CLASS MyCheckBoxSub1 AS CheckBox > Name= 'MyCheckBoxSub1' >ENDDEFINE > >DEFINE CLASS MyColumnSub1 AS Column > Name= 'MyColumnSub1' >ENDDEFINE > >DEFINE CLASS MyComboBoxSub1 AS ComboBox > Name= 'MyComboBoxSub1' >ENDDEFINE > >DEFINE CLASS MyCommandButtonSub1 AS CommandButton > Name= 'MyCommandButtonSub1' >ENDDEFINE > >DEFINE CLASS MyCommandGroupSub1 AS CommandGroup > Name= 'MyCommandGroupSub1' >ENDDEFINE > >DEFINE CLASS MyContainerSub1 AS Container > Name= 'MyContainerSub1' >ENDDEFINE > >DEFINE CLASS MyControlSub1 AS Control > Name= 'MyControlSub1' >ENDDEFINE > >DEFINE CLASS MyCursorSub1 AS Cursor > Name= 'MyCursorSub1' >ENDDEFINE > >DEFINE CLASS MyCustomSub1 AS Custom > Name= 'MyCustomSub1' >ENDDEFINE > >DEFINE CLASS MyDataenvironmentSub1 AS Dataenvironment > Name= 'MyDataenvironmentSub1' >ENDDEFINE > >DEFINE CLASS MyEditBoxSub1 AS EditBox > Name= 'MyEditBoxSub1' >ENDDEFINE > >DEFINE CLASS MyFormSub1 AS Form > Name= 'MyFormSub1' >ENDDEFINE > >DEFINE CLASS MyFormSetSub1 AS FormSet > Name= 'MyFormSetSub1' >ENDDEFINE > >DEFINE CLASS MyFormSetSub2 AS FormSet && FormSet with Private Datasession > Name= 'MyFormSetSub2' > DataSession = 2 >ENDDEFINE > >DEFINE CLASS MyGridSub1 AS Grid > Name= 'MyGridSub1' >ENDDEFINE > >DEFINE CLASS MyHeaderSub1 AS Header > Name= 'MyHeaderSub1' >ENDDEFINE > >DEFINE CLASS MyImageSub1 AS Image > Name= 'MyImageSub1' >ENDDEFINE > >DEFINE CLASS MyLabelSub1 AS Label > Name= 'MyLabelSub1' >ENDDEFINE > >DEFINE CLASS MyLineSub1 AS Line > Name= 'MyLineSub1' >ENDDEFINE > >DEFINE CLASS MyListBoxSub1 AS ListBox > Name= 'MyListBoxSub1' >ENDDEFINE > >DEFINE CLASS MyOptionButtonSub1 AS OptionButton > Name= 'MyOptionButtonSub1' >ENDDEFINE > >DEFINE CLASS MyOptionGroupSub1 AS OptionGroup > Name= 'MyOptionGroupSub1' >ENDDEFINE > >DEFINE CLASS MyPageSub1 AS Page > Name= 'MyPageSub1' >ENDDEFINE > >DEFINE CLASS MyPageFrameSub1 AS PageFrame > Name= 'MyPageFrameSub1' >ENDDEFINE > >DEFINE CLASS MyRelationSub1 AS Relation > Name= 'MyRelationSub1' >ENDDEFINE > >DEFINE CLASS MyRelationSub2 AS Relation >&&Omit the name and it becomes much fatter >&&Not in VFP 7/8! >ENDDEFINE > >DEFINE CLASS MySeparatorSub1 AS Separator > Name= 'MySeparatorSub1' >ENDDEFINE > >DEFINE CLASS MySessionSub1 AS Session > Name= 'MySessionSub1' >ENDDEFINE > >DEFINE CLASS MyShapeSub1 AS Shape > Name= 'MyShapeSub1' >ENDDEFINE > >DEFINE CLASS MySpinnerSub1 AS Spinner > Name= 'MySpinnerSub1' >ENDDEFINE > >DEFINE CLASS MyTextBoxSub1 AS TextBox > Name= 'MyTextBoxSub1' >ENDDEFINE > >DEFINE CLASS MyTimerSub1 AS Timer > Name= 'MyTimerSub1' >ENDDEFINE > >DEFINE CLASS MyToolBarSub1 AS ToolBar > Name= 'MyToolBarSub1' >ENDDEFINE >Thank you very much for illustrating the point.