From the package version notes:
- renamed MaIndexDefinition to MagmaCollectionIndex. Renamed all indexes ending in "Definition", chopped it.
- To support a significant performance improvement, all MagmaCollectionIndexes must have their recordSize set to a power of two. Thanks Andrew Gaylard!
- Moved MaHashIndex test-cases back into the special-collections package.
- Minor fixes and cleanups.
- Here are the latest benchmarks with the new MaHashIndex performance improvement:
'The date is 17 August 2005 10:21:22 pm
Hardware Details: computer : IBM R40 cpu : Pentium-M speed : 1.3GHz memory : 768MB disk : internal IDE
OS Details: osVersion : NT platformName : Win32 platformSubtype : IX86 vmVersion : Squeak3.7 of ''4 September 2004'' [latest update: #5989] imageName : C:\Development\Chris\Development\Squeak\latest3.8.image
Image Details: version : Squeak3.8 lastUpdate : 6665
Code Package Details (from Monticello): ** modified **
Name: Magma tester-cmm.181 Author: cmm Time: 12 August 2005, 5:23:19 pm UUID: 60a56420-0e4a-934b-8ec9-83141ce9116c Ancestors: Magma tester-cmm.180
Magma server details: flushAggressively : false
MagmaSession Details: isLocal : true allowWriteBarrier : false refreshPersistentObjectsEvenWhenChangedOnlyByMe : false
Benchmarker Details: thousands : 1000
Benchmarks: ---
readTests peakRefreshRate : 4679.73635288153 per second. singleObjectRead : 3240.15196960608 per second. oneThousandElementArrayRead : 211.4308553157474 per second. oneThousandElementArrayOfObjectsRead : 7.007981312049835 per second. oneMillionObjectPointersRead : 5 seconds. oneThousandLevelsDeepRead : 5.91715976331361 per second. ---
writeTests peakCommitRate : 23.92821535393819 per second. oneThousandElementArrayCommit : 17.5438596491228 per second. a1001BufferCommit : 9.98003992015968 per second. aOneMillionBufferCommit : 16 seconds. ---
magmaArrayTests getMagmaArraySize : 8824.4351129774 per second. updateThousandsOfMagmaArrayElements : 0.1958863858961802 per second. ---
magmaCollectionTests addThousandsOfObjectsTenAtATime : 8.376 seconds. addThousandsOfObjectsOneHundredAtATime : 4.458 seconds. addThousandsOfObjectsAtOnce : 9.258 seconds.'
'The date is 17 August 2005 10:36:36 pm
Hardware Details: computer : IBM R40 cpu : Pentium-M speed : 1.3GHz memory : 768MB disk : internal IDE
OS Details: osVersion : NT platformName : Win32 platformSubtype : IX86 vmVersion : Squeak3.7 of ''4 September 2004'' [latest update: #5989] imageName : C:\Development\Chris\Development\Squeak\latest3.8.image
Image Details: version : Squeak3.8 lastUpdate : 6665
Code Package Details (from Monticello): ** modified **
Name: Magma tester-cmm.181 Author: cmm Time: 12 August 2005, 5:23:19 pm UUID: 60a56420-0e4a-934b-8ec9-83141ce9116c Ancestors: Magma tester-cmm.180
Magma server details: flushAggressively : false
MagmaSession Details: isLocal : true allowWriteBarrier : true refreshPersistentObjectsEvenWhenChangedOnlyByMe : false
Benchmarker Details: thousands : 1000
Benchmarks: ---
readTests peakRefreshRate : 4599.15824915825 per second. singleObjectRead : 3179.564087182564 per second. oneThousandElementArrayRead : 215.2708374975015 per second. oneThousandElementArrayOfObjectsRead : 6.9916100679185 per second. oneMillionObjectPointersRead : 5 seconds. oneThousandLevelsDeepRead : 5.95592614651578 per second. ---
writeTests peakCommitRate : 92.1078921078921 per second. oneThousandElementArrayCommit : 39.4108280254777 per second. a1001BufferCommit : 23.35329341317365 per second. aOneMillionBufferCommit : 17 seconds. ---
magmaArrayTests getMagmaArraySize : 7832.83343331334 per second. updateThousandsOfMagmaArrayElements : 0.194024058983314 per second. ---
magmaCollectionTests addThousandsOfObjectsTenAtATime : 5.001 seconds. addThousandsOfObjectsOneHundredAtATime : 3.898 seconds. addThousandsOfObjectsAtOnce : 10.157 seconds.'
'The date is 17 August 2005 11:03:51 pm
Hardware Details: computer : IBM R40 cpu : Pentium-M speed : 1.3GHz memory : 768MB disk : internal IDE
OS Details: osVersion : NT platformName : Win32 platformSubtype : IX86 vmVersion : Squeak3.7 of ''4 September 2004'' [latest update: #5989] imageName : C:\Development\Chris\Development\Squeak\latest3.8.image
Image Details: version : Squeak3.8 lastUpdate : 6665
Code Package Details (from Monticello): ** modified **
Name: Magma tester-cmm.181 Author: cmm Time: 12 August 2005, 5:23:19 pm UUID: 60a56420-0e4a-934b-8ec9-83141ce9116c Ancestors: Magma tester-cmm.180
MagmaSession Details: isLocal : false allowWriteBarrier : false refreshPersistentObjectsEvenWhenChangedOnlyByMe : false
Benchmarker Details: thousands : 1000
Benchmarks: ---
readTests peakRefreshRate : 229.3082766893243 per second. singleObjectRead : 247.6514091545073 per second. oneThousandElementArrayRead : 114.5937312836894 per second. oneThousandElementArrayOfObjectsRead : 7.578779417630634 per second. oneMillionObjectPointersRead : 7 seconds. oneThousandLevelsDeepRead : 5.238649592549476 per second. ---
writeTests peakCommitRate : 16.90869305748956 per second. oneThousandElementArrayCommit : 12.97405189620759 per second. a1001BufferCommit : 7.50394944707741 per second. aOneMillionBufferCommit : 32 seconds. ---
magmaArrayTests getMagmaArraySize : 47.75716694772344 per second. updateThousandsOfMagmaArrayElements : 0.2635046113306983 per second. ---
magmaCollectionTests addThousandsOfObjectsTenAtATime : 11.912 seconds. addThousandsOfObjectsOneHundredAtATime : 5.69 seconds. addThousandsOfObjectsAtOnce : 11.47 seconds.'
'The date is 17 August 2005 11:18:51 pm
Hardware Details: computer : IBM R40 cpu : Pentium-M speed : 1.3GHz memory : 768MB disk : internal IDE
OS Details: osVersion : NT platformName : Win32 platformSubtype : IX86 vmVersion : Squeak3.7 of ''4 September 2004'' [latest update: #5989] imageName : C:\Development\Chris\Development\Squeak\latest3.8.image
Image Details: version : Squeak3.8 lastUpdate : 6665
Code Package Details (from Monticello): ** modified **
Name: Magma tester-cmm.181 Author: cmm Time: 12 August 2005, 5:23:19 pm UUID: 60a56420-0e4a-934b-8ec9-83141ce9116c Ancestors: Magma tester-cmm.180
MagmaSession Details: isLocal : false allowWriteBarrier : true refreshPersistentObjectsEvenWhenChangedOnlyByMe : false
Benchmarker Details: thousands : 1000
Benchmarks: ---
readTests peakRefreshRate : 226.109556177529 per second. singleObjectRead : 243.1027588964414 per second. oneThousandElementArrayRead : 113.8406231276213 per second. oneThousandElementArrayOfObjectsRead : 7.55317034386802 per second. oneMillionObjectPointersRead : 7 seconds. oneThousandLevelsDeepRead : 5.19376747902517 per second. ---
writeTests peakCommitRate : 36.97042366107114 per second. oneThousandElementArrayCommit : 23.14445331205108 per second. a1001BufferCommit : 14.6883684001588 per second. aOneMillionBufferCommit : 26 seconds. ---
magmaArrayTests getMagmaArraySize : 19.23076923076923 per second. updateThousandsOfMagmaArrayElements : 10 ---
magmaCollectionTests addThousandsOfObjectsTenAtATime : 8.015 seconds. addThousandsOfObjectsOneHundredAtATime : 5.559 seconds. addThousandsOfObjectsAtOnce : 10.839 seconds.'
Enjoy, Chris
Hi Chris,
Could you clarify the expected behaviour for me w.r.t the renamed indexes.
I have a huge Magma repository generated using older versions of Magma. These contain many index instances, ending with 'Definition'.
If I try to open the repository using the latest Magma code how will it materialise these indiex instances ?
This issue of how to migrate Magma, yet support older repositories is as aspect where I have little experience.
Thanks,
Brent
Could you clarify the expected behaviour for me w.r.t the renamed indexes.
I have a huge Magma repository generated using older versions of Magma. These contain many index instances, ending with 'Definition'.
Hi Brent, I did not mean to be inconsiderate of your "legacy" (I wish :) ) repositories; I apologize. I happily renamed those classes with the notion of complete file-format flexibility in mind. Btw, has this changed for you?
So here we have an opportunity to see how well it can cope with this. Magma sees the indexes as just another "domain" class, and Magma was designed to allow domain classes to evolve, including renamed.
Try following these steps:
1) back up your legacy repository, just in case 2) in an image with the old code, Magma tester-cmm.162 loaded, connect a session. 3) Begin a transaction, "self begin". 4) Open up MaIndexDefinition in a browser. 5) Using the browser menu, rename MaIndexDefinition to MagmaCollectionIndex. Rename the appropriate subclasses to cut off the word "Definition". 6) commit the transaction. 7) disconnectAndClose
You should now be able to load the new code, Magma tester-cmm.184, and use your repository normally.
This is an area of Magma that, while there is one test case for it, well.. It's just one test case. :)
Please let me know how it goes, and don't panic if this doesn't work, we can certainly debug it or apply a more drastic approach if necessary..
Regards, Chris
magma@lists.squeakfoundation.org