The profiling using the recordset was even worst. I changed the iteration
[1] to add everything to a collection, but most of the time is spent in
#calculateMethods and #calculateProperties. Which is performed everytime
for each ADOField.

I wouldn't consider this a stress test, but maybe the methods and
properties should be cached, or a different class of dispatcher should be
used where the methods and properties are defined ahead of time instead of
being discovered when first invoked.

Regards,


[1] "Modified code"
rst := ADORecordset createInstance .
rst open: 'SELECT * FROM PLAYER' activeConnection: conn cursorType: 2
lockType: 3 options: -1.
results := OrderedCollection new.
[rst eof] whileFalse: [
  | row |
  row := Array new: rst fields count.
  1 to: row size do: [ :idx | row at: idx put: (rst fields item: idx) value
].
  results add: row.
  rst moveNext
 ].



Esteban A. Maringolo


On Wed, Mar 11, 2020 at 3:02 PM Tomaž Turk <tomaz.t...@ef.uni-lj.si> wrote:

> Hi Esteban,
>
> Thanks for reporting this issue. I haven't made any "stress" tests yet for
> ADOClient. Could you please try to use ADORecordset as described in the
> readme? There you have a direct access to each record at a time, and then
> you can create your own "loop" to process the query result. In this way you
> can avoid the loop in ADOClient>>query: method.
>
> Best wishes,
> Tomaz
>
> ------ Original Message ------
> From: "Esteban Maringolo" <emaring...@gmail.com>
> To: "Tomaž Turk" <tomaz.t...@ef.uni-lj.si>; "Any question about pharo is
> welcome" <pharo-users@lists.pharo.org>
> Sent: 11. 03. 2020 18:25:51
> Subject: Re: [Pharo-users] Generate class hierarchy from JSON Schema
>
> As an additional reference, I attach the profile tally  for the query I'm
> mentioning.
>
> The culprit seems to be the calculation of the ADOField properties that
> might be calculated on every call.
>
> Regards,
>
> Esteban A. Maringolo
>
>
> On Wed, Mar 11, 2020 at 2:13 PM Esteban Maringolo <emaring...@gmail.com>
> wrote:
>
>> Hi,
>>
>> To feed a Pharo app I need to read from an old MDB file, via ODBC.
>>
>> So I tested PharoADO and, after adding a missing Variant Type [1], I got
>> my query working (at least read only).
>>
>> However the time of ADOClient to return a query with 10K rows of 5
>> columns each is extremely slow (+65000ms) compared, e.g., with Dolphin
>> Smalltalk via ODBC (62ms).
>>
>> The time of the execute call to return is instantaneous, so I think the
>> issue might be in the creation of the result set.
>>
>> Is this a known issue?
>>
>> Should I check something else?
>>
>> Thanks in advance,
>>
>>
>> [1]  https://github.com/tesonep/pharo-com/pull/10
>> Esteban A. Maringolo
>>
>>
>> On Fri, Jan 24, 2020 at 5:59 AM Tomaž Turk <tomaz.t...@ef.uni-lj.si>
>> wrote:
>>
>>>
>>> That would be amazing!
>>>
>>> I'm a Mac/Unix guy so I don't have access to the other platforms (I
>>> suppose I could fire up an AWS Oracle).  I can do mysql/mariadb, posgresql,
>>> and sqlite.
>>>
>>> I'm pretty close to pushing my ActiveRecord extensions.  I just need to
>>> get many to many with link tables done and it is good to go.  I spent a few
>>> days "porting" the ruby inflector and its tests.
>>>
>>> As for database introspection, I am relying on this new method and the
>>> result set format on DatabasePlatform.
>>>
>>> printSqlStatementToListColumnsInTable: aDatabaseTable inSchema:
>>> schemaString on: aStream
>>> " Format:
>>>       name           |       type        | length | nullable |
>>> default_value     | pk
>>>
>>> -------------------------+-------------------+--------+----------+-----------------------+----
>>>  id                      | character varying |    255 |        0 |
>>> ''::character varying |  1
>>>
>>>
>>> This is great news about ActiveRecord!
>>>
>>> ADO is, unfortunately, a Windows library, so PharoADO is limited to
>>> Windows. Maybe as a next step we should focus into Garage and the addition
>>> of SQL Server and Oracle support. If I only had time ...
>>>
>>> Stéphane, thanks for the support.
>>>
>>> Best wishes,
>>> Tomaz
>>>
>>>
>>>
>>>
>>>
>>>
>>>
 - 138775 tallies, 138791 msec.

**Tree**
--------------------------------
Process: (40s) Morphic UI Process: nil
--------------------------------
86.1% {119451ms} UndefinedObject>>DoIt
  43.2% {59996ms} ADOField>>value
    |43.2% {59983ms} COMDispatchInstance>>propertyNamed:
    |  32.7% {45451ms} COMTypeInfo>>properties
    |    |32.7% {45446ms} COMTypeInfo>>calculateProperties
    |    |  31.1% {43135ms} COMTypeInfo>>methods
    |    |    |31.1% {43135ms} COMTypeInfo>>calculateMethods
    |    |    |  31.1% {43133ms} BlockClosure>>ensure:
    |    |    |    31.0% {43067ms} COMTypeInfo>>calculateMethods
    |    |    |      30.6% {42445ms} COMTypeInfo>>calculateMethodAt:
    |    |    |        25.9% {35940ms} BlockClosure>>ensure:
    |    |    |          |24.3% {33740ms} COMTypeInfo>>calculateMethodAt:
    |    |    |          |  |23.1% {32117ms} COMMethod class>>fromFuncDesc:in:
    |    |    |          |  |  |23.1% {32041ms} COMMethod>>from:in:
    |    |    |          |  |  |  13.5% {18709ms} 
COMTypeInfo>>getNamesOfMemberID:maxNames:
    |    |    |          |  |  |    |5.1% {7019ms} OrderedCollection>>collect:
    |    |    |          |  |  |    |  |4.9% {6736ms} ByteSymbol(Symbol)>>value:
    |    |    |          |  |  |    |  |  4.8% {6695ms} BSTRString>>asString
    |    |    |          |  |  |    |  |    4.6% {6424ms} 
Win32WideString>>asString
    |    |    |          |  |  |    |  |      1.8% {2560ms} 
Win32WideString>>size
    |    |    |          |  |  |    |  |        |1.4% {1939ms} primitives
    |    |    |          |  |  |    |  |      1.2% {1657ms} 
ByteArray>>utf8Decoded
    |    |    |          |  |  |    |  |        |1.0% {1448ms} 
ByteArray>>decodeWith:
    |    |    |          |  |  |    |  |        |  1.0% {1433ms} 
ZnUTF8Encoder(ZnUTFEncoder)>>decodeBytes:
    |    |    |          |  |  |    |  |      1.2% {1597ms} 
Win32WideString>>reportErrorIfZero:
    |    |    |          |  |  |    |  |        1.1% {1527ms} primitives
    |    |    |          |  |  |    |2.7% {3689ms} ExternalAddress>>autoRelease
    |    |    |          |  |  |    |  |2.3% {3165ms} WeakRegistry>>add:
    |    |    |          |  |  |    |  |  2.1% {2951ms} 
WeakRegistry>>add:executor:
    |    |    |          |  |  |    |  |    2.0% {2769ms} 
WeakRegistry>>protected:
    |    |    |          |  |  |    |  |      2.0% {2745ms} 
Semaphore>>critical:ifError:
    |    |    |          |  |  |    |  |        2.0% {2712ms} 
Semaphore>>critical:
    |    |    |          |  |  |    |  |          1.9% {2661ms} 
BlockClosure>>ensure:
    |    |    |          |  |  |    |  |            1.9% {2661ms} 
Semaphore>>critical:
    |    |    |          |  |  |    |  |              1.8% {2515ms} 
Semaphore>>critical:ifError:
    |    |    |          |  |  |    |  |                1.8% {2436ms} 
BlockClosure>>ifError:
    |    |    |          |  |  |    |  |                  1.7% {2397ms} 
BlockClosure>>on:do:
    |    |    |          |  |  |    |  |                    1.7% {2364ms} 
WeakRegistry>>add:executor:
    |    |    |          |  |  |    |  |                      1.6% {2254ms} 
WeakIdentityKeyDictionary(Dictionary)>>at:ifAbsent:
    |    |    |          |  |  |    |  |                        1.1% {1473ms} 
WeakRegistry>>add:executor:
    |    |    |          |  |  |    |2.3% {3202ms} OrderedCollection>>do:
    |    |    |          |  |  |    |  |2.1% {2853ms} ByteSymbol(Symbol)>>value:
    |    |    |          |  |  |    |  |  2.0% {2825ms} 
BSTRString(FFIExternalReference)>>autoRelease
    |    |    |          |  |  |    |  |    2.0% {2764ms} 
FFIExternalResourceManager class>>addResource:
    |    |    |          |  |  |    |  |      2.0% {2740ms} 
FFIExternalResourceManager>>addResource:
    |    |    |          |  |  |    |  |        2.0% {2710ms} 
FFIExternalResourceManager>>addResource:data:
    |    |    |          |  |  |    |  |          1.8% {2563ms} 
WeakRegistry>>add:executor:
    |    |    |          |  |  |    |  |            1.8% {2526ms} 
WeakRegistry>>protected:
    |    |    |          |  |  |    |  |              1.8% {2495ms} 
Semaphore>>critical:ifError:
    |    |    |          |  |  |    |  |                1.8% {2447ms} 
Semaphore>>critical:
    |    |    |          |  |  |    |  |                  1.7% {2397ms} 
BlockClosure>>ensure:
    |    |    |          |  |  |    |  |                    1.7% {2397ms} 
Semaphore>>critical:
    |    |    |          |  |  |    |  |                      1.7% {2306ms} 
Semaphore>>critical:ifError:
    |    |    |          |  |  |    |  |                        1.6% {2250ms} 
BlockClosure>>ifError:
    |    |    |          |  |  |    |  |                          1.6% {2219ms} 
BlockClosure>>on:do:
    |    |    |          |  |  |    |  |                            1.6% 
{2167ms} WeakRegistry>>add:executor:
    |    |    |          |  |  |    |  |                              1.2% 
{1668ms} WeakIdentityKeyDictionary(Dictionary)>>at:ifAbsent:
    |    |    |          |  |  |    |1.4% {1911ms} 
COMTypeInfo(COMUnknownInstance)>>reportErrorIfNoZero:
    |    |    |          |  |  |    |  1.4% {1894ms} primitives
    |    |    |          |  |  |  3.0% {4097ms} FFIExternalArray 
class>>fromHandle:type:size:
    |    |    |          |  |  |    |2.8% {3913ms} FFIExternalArray 
class>>resolveType:
    |    |    |          |  |  |    |  2.8% {3827ms} FFICallout>>resolveType:
    |    |    |          |  |  |    |    1.2% {1639ms} FFICallout>>aliasForType:
    |    |    |          |  |  |    |    1.0% {1455ms} FFIExternalArray 
class(Behavior)>>ffiBindingOf:
    |    |    |          |  |  |  2.8% {3933ms} COMFuncDesc>>memid
    |    |    |          |  |  |    |2.7% {3793ms} 
ExternalAddress(ByteArray)>>platformLongAt:
    |    |    |          |  |  |    |  1.7% {2299ms} FFIArchitecture 
class>>forCurrentArchitecture
    |    |    |          |  |  |    |    |1.1% {1519ms} FFIArchitecture 
class(Behavior)>>allSubclasses
    |    |    |          |  |  |    |  1.1% {1484ms} 
FFI_i386(FFIArchitecture)>>longTypeSize
    |    |    |          |  |  |  1.3% {1796ms} 
FFIExternalArray(SequenceableCollection)>>do:
    |    |    |          |  |  |    1.1% {1461ms} COMMethod>>from:in:
    |    |    |          |  |1.1% {1540ms} Context>>aboutToReturn:through:
    |    |    |          |1.6% {2200ms} Context>>resume:through:
    |    |    |        3.3% {4572ms} COMTypeInfo>>ffiGetFuncDesc:at:
    |    |    |          |1.5% {2053ms} ExternalAddress>>packToArity:
    |    |    |          |  |1.4% {1982ms} ExternalAddress>>pointerAutoRelease
    |    |    |          |1.0% {1393ms} ExternalAddress>>unpackFromArity:
    |    |    |        1.3% {1826ms} ExternalAddress>>autoRelease
    |    |    |          1.0% {1452ms} WeakRegistry>>add:
    |    |  1.4% {1889ms} Set>>collect:
    |    |    1.4% {1877ms} Array(SequenceableCollection)>>do:
    |    |      1.3% {1861ms} Set>>collect:
    |    |        1.2% {1691ms} COMTypeInfo>>calculateProperties
    |    |          1.2% {1683ms} COMProperty class>>named:on:
    |    |            1.2% {1672ms} COMProperty>>named:on:
    |    |              1.1% {1516ms} 
OrderedCollection(Collection)>>detect:ifNone:
    |    |                1.1% {1496ms} 
OrderedCollection(Collection)>>detect:ifFound:ifNone:
    |    |                  1.1% {1464ms} OrderedCollection>>do:
    |  9.7% {13495ms} COMDispatchInstance>>getDispatchType
    |    9.5% {13164ms} COMTypeInfo>>dispatchInterface
    |      9.4% {13112ms} COMTypeInfo>>typeKind
    |        9.4% {13112ms} COMTypeInfo>>fillTypeAttributes
    |          9.4% {13112ms} BlockClosure>>ensure:
    |            9.4% {13112ms} COMTypeInfo>>fillTypeAttributes
    |              9.2% {12740ms} GUID>>asString
    |                9.2% {12738ms} String class(SequenceableCollection 
class)>>streamContents:
    |                  9.2% {12736ms} String class(SequenceableCollection 
class)>>new:streamContents:
    |                    9.2% {12724ms} GUID>>asString
    |                      8.5% {11793ms} GUID>>data4
    |                        7.8% {10763ms} FFITypeArray class(FFIArray 
class)>>ofType:size:
    |                          6.8% {9369ms} FFIArray 
class(Class)>>newAnonymousSubclass
    |                            6.8% {9369ms} ShiftAnonymousClassInstaller 
class(ShiftClassInstaller class)>>make:
    |                              6.6% {9119ms} 
ShiftAnonymousClassInstaller(ShiftClassInstaller)>>make:
    |                                6.5% {9087ms} 
ShiftAnonymousClassInstaller(ShiftClassInstaller)>>make
    |                                  6.4% {8819ms} BlockClosure>>on:do:
    |                                    6.3% {8809ms} 
ShiftAnonymousClassInstaller(ShiftClassInstaller)>>make
    |                                      6.1% {8440ms} 
ShiftClassBuilder>>build
    |                                        2.5% {3463ms} 
ShiftClassBuilder>>createMetaclass
    |                                          |2.4% {3314ms} 
ShDefaultBuilderEnhancer>>configureMetaclass:superclass:withLayoutType:slots:
    |                                          |  2.4% {3310ms} 
Metaclass(ClassDescription)>>superclass:withLayoutType:slots:
    |                                          |    1.7% {2348ms} 
FixedLayout(PointerLayout)>>checkSanity
    |                                        1.5% {2097ms} 
ShiftClassBuilder>>createClass
    |                                          |1.3% {1740ms} 
ShDefaultBuilderEnhancer>>configureClass:superclass:withLayoutType:slots:
    |                                          |  1.2% {1728ms} a subclass of 
FFIArray class(ClassDescription)>>superclass:withLayoutType:slots:
    |                                        1.2% {1676ms} 
ShiftClassBuilder>>createSharedVariables
    |                                          1.1% {1484ms} 
ShDefaultBuilderEnhancer>>on:declareClassVariables:sharing:
  34.9% {48388ms} ADOFields>>item:
    |34.9% {48376ms} COMDispatchInstance>>propertyNamed:withArguments:
    |  23.1% {32079ms} COMTypeInfo>>properties
    |    |23.1% {32052ms} COMTypeInfo>>calculateProperties
    |    |  22.8% {31668ms} COMTypeInfo>>methods
    |    |    22.8% {31668ms} COMTypeInfo>>calculateMethods
    |    |      22.8% {31666ms} BlockClosure>>ensure:
    |    |        22.8% {31611ms} COMTypeInfo>>calculateMethods
    |    |          22.4% {31032ms} COMTypeInfo>>calculateMethodAt:
    |    |            19.2% {26717ms} BlockClosure>>ensure:
    |    |              |18.3% {25344ms} COMTypeInfo>>calculateMethodAt:
    |    |              |  17.6% {24380ms} COMMethod class>>fromFuncDesc:in:
    |    |              |    17.5% {24294ms} COMMethod>>from:in:
    |    |              |      10.7% {14903ms} 
COMTypeInfo>>getNamesOfMemberID:maxNames:
    |    |              |        |4.5% {6242ms} OrderedCollection>>collect:
    |    |              |        |  |4.3% {6012ms} ByteSymbol(Symbol)>>value:
    |    |              |        |  |  4.3% {5973ms} BSTRString>>asString
    |    |              |        |  |    4.1% {5745ms} Win32WideString>>asString
    |    |              |        |  |      1.6% {2265ms} Win32WideString>>size
    |    |              |        |  |        |1.3% {1740ms} primitives
    |    |              |        |  |      1.1% {1526ms} 
Win32WideString>>reportErrorIfZero:
    |    |              |        |  |        |1.0% {1437ms} primitives
    |    |              |        |  |      1.0% {1441ms} ByteArray>>utf8Decoded
    |    |              |        |2.1% {2856ms} OrderedCollection>>do:
    |    |              |        |  |1.9% {2570ms} ByteSymbol(Symbol)>>value:
    |    |              |        |  |  1.8% {2522ms} 
BSTRString(FFIExternalReference)>>autoRelease
    |    |              |        |  |    1.8% {2472ms} 
FFIExternalResourceManager class>>addResource:
    |    |              |        |  |      1.8% {2434ms} 
FFIExternalResourceManager>>addResource:
    |    |              |        |  |        1.7% {2417ms} 
FFIExternalResourceManager>>addResource:data:
    |    |              |        |  |          1.7% {2294ms} 
WeakRegistry>>add:executor:
    |    |              |        |  |            1.6% {2243ms} 
WeakRegistry>>protected:
    |    |              |        |  |              1.6% {2217ms} 
Semaphore>>critical:ifError:
    |    |              |        |  |                1.6% {2191ms} 
Semaphore>>critical:
    |    |              |        |  |                  1.5% {2145ms} 
BlockClosure>>ensure:
    |    |              |        |  |                    1.5% {2145ms} 
Semaphore>>critical:
    |    |              |        |  |                      1.5% {2015ms} 
Semaphore>>critical:ifError:
    |    |              |        |  |                        1.4% {1971ms} 
BlockClosure>>ifError:
    |    |              |        |  |                          1.4% {1939ms} 
BlockClosure>>on:do:
    |    |              |        |  |                            1.4% {1912ms} 
WeakRegistry>>add:executor:
    |    |              |        |  |                              1.1% 
{1478ms} WeakIdentityKeyDictionary(Dictionary)>>at:ifAbsent:
    |    |              |        |1.7% {2332ms} ExternalAddress>>autoRelease
    |    |              |        |  |1.4% {1994ms} WeakRegistry>>add:
    |    |              |        |  |  1.4% {1881ms} WeakRegistry>>add:executor:
    |    |              |        |  |    1.3% {1755ms} WeakRegistry>>protected:
    |    |              |        |  |      1.2% {1730ms} 
Semaphore>>critical:ifError:
    |    |              |        |  |        1.2% {1706ms} Semaphore>>critical:
    |    |              |        |  |          1.2% {1648ms} 
BlockClosure>>ensure:
    |    |              |        |  |            1.2% {1648ms} 
Semaphore>>critical:
    |    |              |        |  |              1.1% {1567ms} 
Semaphore>>critical:ifError:
    |    |              |        |  |                1.1% {1520ms} 
BlockClosure>>ifError:
    |    |              |        |  |                  1.1% {1497ms} 
BlockClosure>>on:do:
    |    |              |        |  |                    1.1% {1472ms} 
WeakRegistry>>add:executor:
    |    |              |        |  |                      1.0% {1426ms} 
WeakIdentityKeyDictionary(Dictionary)>>at:ifAbsent:
    |    |              |        |1.0% {1428ms} 
COMTypeInfo(COMUnknownInstance)>>reportErrorIfNoZero:
    |    |              |        |  1.0% {1403ms} primitives
    |    |              |      2.2% {3031ms} FFIExternalArray 
class>>fromHandle:type:size:
    |    |              |        |2.1% {2855ms} FFIExternalArray 
class>>resolveType:
    |    |              |        |  2.0% {2787ms} FFICallout>>resolveType:
    |    |              |      1.8% {2497ms} COMFuncDesc>>memid
    |    |              |        |1.8% {2431ms} 
ExternalAddress(ByteArray)>>platformLongAt:
    |    |              |        |  1.1% {1541ms} FFIArchitecture 
class>>forCurrentArchitecture
    |    |              |      1.3% {1752ms} 
FFIExternalArray(SequenceableCollection)>>do:
    |    |              |        1.0% {1418ms} COMMethod>>from:in:
    |    |            2.3% {3145ms} COMTypeInfo>>ffiGetFuncDesc:at:
    |    |              1.1% {1579ms} ExternalAddress>>packToArity:
    |    |                1.1% {1471ms} ExternalAddress>>pointerAutoRelease
    |  9.9% {13729ms} COMDispatchInstance>>getDispatchType
    |    |9.7% {13411ms} COMTypeInfo>>dispatchInterface
    |    |  9.6% {13377ms} COMTypeInfo>>typeKind
    |    |    9.6% {13377ms} COMTypeInfo>>fillTypeAttributes
    |    |      9.6% {13377ms} BlockClosure>>ensure:
    |    |        9.6% {13377ms} COMTypeInfo>>fillTypeAttributes
    |    |          9.4% {13011ms} GUID>>asString
    |    |            9.4% {13005ms} String class(SequenceableCollection 
class)>>streamContents:
    |    |              9.4% {13003ms} String class(SequenceableCollection 
class)>>new:streamContents:
    |    |                9.4% {12989ms} GUID>>asString
    |    |                  8.7% {12023ms} GUID>>data4
    |    |                    7.9% {10904ms} FFITypeArray class(FFIArray 
class)>>ofType:size:
    |    |                      6.8% {9450ms} FFIArray 
class(Class)>>newAnonymousSubclass
    |    |                        |6.8% {9448ms} ShiftAnonymousClassInstaller 
class(ShiftClassInstaller class)>>make:
    |    |                        |  6.6% {9191ms} 
ShiftAnonymousClassInstaller(ShiftClassInstaller)>>make:
    |    |                        |    6.6% {9146ms} 
ShiftAnonymousClassInstaller(ShiftClassInstaller)>>make
    |    |                        |      6.4% {8833ms} BlockClosure>>on:do:
    |    |                        |        6.4% {8814ms} 
ShiftAnonymousClassInstaller(ShiftClassInstaller)>>make
    |    |                        |          6.1% {8446ms} 
ShiftClassBuilder>>build
    |    |                        |            2.5% {3468ms} 
ShiftClassBuilder>>createMetaclass
    |    |                        |              |2.4% {3313ms} 
ShDefaultBuilderEnhancer>>configureMetaclass:superclass:withLayoutType:slots:
    |    |                        |              |  2.4% {3313ms} 
Metaclass(ClassDescription)>>superclass:withLayoutType:slots:
    |    |                        |              |    1.7% {2364ms} 
FixedLayout(PointerLayout)>>checkSanity
    |    |                        |              |      1.0% {1411ms} 
FixedLayout(PointerLayout)>>checkSlotNames
    |    |                        |            1.6% {2171ms} 
ShiftClassBuilder>>createClass
    |    |                        |              |1.3% {1794ms} 
ShDefaultBuilderEnhancer>>configureClass:superclass:withLayoutType:slots:
    |    |                        |              |  1.3% {1784ms} a subclass of 
FFIArray class(ClassDescription)>>superclass:withLayoutType:slots:
    |    |                        |            1.1% {1576ms} 
ShiftClassBuilder>>createSharedVariables
    |    |                        |              1.0% {1411ms} 
ShDefaultBuilderEnhancer>>on:declareClassVariables:sharing:
    |    |                      1.0% {1395ms} FFIExternalType 
class>>resolveType:
    |  1.8% {2515ms} COMProperty>>getFrom:withArguments:
    |    1.8% {2513ms} COMMethod>>invokeOn:withArgs:
  6.5% {8965ms} ADOFields>>count
    6.5% {8965ms} COMDispatchInstance>>propertyNamed:
      4.4% {6073ms} COMTypeInfo>>properties
        |4.4% {6071ms} COMTypeInfo>>calculateProperties
        |  4.3% {5991ms} COMTypeInfo>>methods
        |    4.3% {5991ms} COMTypeInfo>>calculateMethods
        |      4.3% {5991ms} BlockClosure>>ensure:
        |        4.3% {5979ms} COMTypeInfo>>calculateMethods
        |          4.2% {5857ms} COMTypeInfo>>calculateMethodAt:
        |            3.7% {5148ms} BlockClosure>>ensure:
        |              3.5% {4924ms} COMTypeInfo>>calculateMethodAt:
        |                3.4% {4737ms} COMMethod class>>fromFuncDesc:in:
        |                  3.4% {4726ms} COMMethod>>from:in:
        |                    2.1% {2923ms} 
COMTypeInfo>>getNamesOfMemberID:maxNames:
      2.0% {2736ms} COMDispatchInstance>>getDispatchType
        2.0% {2708ms} COMTypeInfo>>dispatchInterface
          1.9% {2700ms} COMTypeInfo>>typeKind
            1.9% {2700ms} COMTypeInfo>>fillTypeAttributes
              1.9% {2700ms} BlockClosure>>ensure:
                1.9% {2700ms} COMTypeInfo>>fillTypeAttributes
                  1.9% {2629ms} GUID>>asString
                    1.9% {2629ms} String class(SequenceableCollection 
class)>>streamContents:
                      1.9% {2629ms} String class(SequenceableCollection 
class)>>new:streamContents:
                        1.9% {2625ms} GUID>>asString
                          1.8% {2452ms} GUID>>data4
                            1.6% {2202ms} FFITypeArray class(FFIArray 
class)>>ofType:size:
                              1.4% {1925ms} FFIArray 
class(Class)>>newAnonymousSubclass
                                1.4% {1925ms} ShiftAnonymousClassInstaller 
class(ShiftClassInstaller class)>>make:
                                  1.4% {1888ms} 
ShiftAnonymousClassInstaller(ShiftClassInstaller)>>make:
                                    1.4% {1874ms} 
ShiftAnonymousClassInstaller(ShiftClassInstaller)>>make
                                      1.3% {1824ms} BlockClosure>>on:do:
                                        1.3% {1824ms} 
ShiftAnonymousClassInstaller(ShiftClassInstaller)>>make
                                          1.3% {1755ms} ShiftClassBuilder>>build
--------------------------------
Process: other processes
--------------------------------
13.7% {19012ms} WeakArray class>>restartFinalizationProcess
  13.7% {19012ms} WeakArray class>>finalizationProcess
    11.0% {15316ms} primitives
    2.7% {3688ms} WeakArray class>>doOldFinalization
      2.7% {3688ms} Semaphore>>critical:
        2.7% {3688ms} BlockClosure>>ensure:
          2.7% {3688ms} Semaphore>>critical:
            2.7% {3688ms} WeakArray class>>doOldFinalization
              2.7% {3686ms} WeakArray(SequenceableCollection)>>do:
                2.7% {3682ms} WeakArray class>>doOldFinalization
                  2.7% {3680ms} BlockClosure>>on:fork:
                    2.6% {3675ms} BlockClosure>>on:do:
                      2.6% {3672ms} WeakArray class>>doOldFinalization
                        2.6% {3665ms} WeakRegistry>>finalizeValues
                          1.9% {2594ms} OrderedCollection>>do:
                            1.2% {1671ms} WeakRegistry>>finalizeValues
                              1.1% {1500ms} BlockClosure>>on:fork:

**Leaves**
11.0% {15316ms} WeakArray class>>finalizationProcess
4.7% {6573ms} ByteArray>>pointerAt:
2.9% {4039ms} Win32WideString>>size
2.6% {3628ms} COMDispatchInstance(COMUnknownInstance)>>reportErrorIfNoZero:
2.6% {3601ms} OrderedCollection>>do:
2.4% {3265ms} Win32WideString>>reportErrorIfZero:
1.9% {2631ms} WeakRegistry>>add:executor:
1.8% {2490ms} Array(SequenceableCollection)>>do:
1.4% {1994ms} ByteArray>>unsignedByteAt:
1.4% {1926ms} Context>>resume:through:
1.4% {1891ms} ExternalAddress>>unpackFromArity:
1.2% {1716ms} WeakIdentityKeyDictionary(WeakKeyDictionary)>>scanFor:
1.2% {1681ms} LayoutClassScope>>do:
1.2% {1596ms} ExternalAddress>>autoRelease
1.1% {1555ms} ByteSymbol(Symbol)>>=
1.1% {1515ms} WeakKeyAssociation>>key
1.0% {1408ms} a subclass of FFIArray class(Class)>>sharedPools

**Memory**
        old                     +16,777,216 bytes
        young           -19,307,696 bytes
        used            -2,530,480 bytes
        free            +19,307,696 bytes

**GCs**
        full                    26 totalling 2,478ms (2.0% uptime), avg 95.0ms
        incr            7403 totalling 11,800ms (9.0% uptime), avg 2.0ms
        tenures         11,514,213 (avg 0 GCs/tenure)
        root table      0 overflows

Reply via email to