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