Response from ObjectConnect.  Note, the attachments mentioned at the end are not available on this site.
-----------------------------------
From: Tarik Kerroum
To: David Girle (PHX)
Subject: Re: Garbage collection and Performance Date: Monday, January 05, 1998 9:13AM
 

David,

Thank you for the info.

The equivalent for #unusedMemory is:

unusedMemory
     Processor gcForceCycle.
     Processor gcForceCycle.

Note that there must be two cycles to free all memory.

We looked at the benchmarks and have a couple of comments:

1) Allocations
The Windows 95 synchronization APIs sometimes hang and come back with a timeout. The actual value is between 3 and 4.5. You may sometimes be able to get the result on Windows 95, and it works consistently on Windows NT.
The GC algorithm works best when allocations are not too frequent, so that the GC thread can collect in the background. The benchmark forces both threads to synchronize very frequently, hence the overhead.

2) Write Speed Tests
The collection allocation should be moved out of the loop (and the collection emptied), otherwise the result is biased by the allocation performance.

3) String Compare
The test is bogus because the two strings are immediate literals and equal.
If the literals are merged and String>>= compares for identity, the benchmark nds up measuring identity.
In addition, a compiler might precompile the test when literals are involved.

The test compares the different implementations of strcmp, plus some overhead for resolving the equality message. The differences in terms of speed are surprising (strcmp is implemented in assembler). We added the call to strcmp to the benchmark.

4) Benchmark
The attachment contains an updated project file for STMT, as well as an executable.

Best regards,

    Tarik Kerroum
    Object Connect, Sarl