Hi Cris (and everyone), lately i had conversation with Florian on IRC , he says that my dictionaries is about 2 times faster than current magma ones (he gave me read/commit times of his data crunching 12s - my vs 25s - old ).
The only thing which darkening existence is that they seem having bug and need to be tested.
Florian gave me his image, so i can try find the bug, but since i'm don't have deep knowledge in magma, maybe someone have time to test it with different DBs too?
P.S. Remember, you need to _load_ this package, not merge with existing. Its located in magma tester squeaksource repository
btw, reading comment in MagmaOidManager>>oidOf:is: "removeKey: is very slow, that's the whole point of newObejcts and newOids. They're a dangerous hack to avoid removeKey."
in my dicts #removeKey speed ~~ #at: /#at:put: speed, this code can be simplified?
Sig, does the test suite run through to completion with your new Dictionary's?
Also, how do the MagmaBenchmarker results look with it?
On 8/21/07, Igor Stasenko siguctua@gmail.com wrote:
Hi Cris (and everyone), lately i had conversation with Florian on IRC , he says that my dictionaries is about 2 times faster than current magma ones (he gave me read/commit times of his data crunching 12s - my vs 25s - old ).
The only thing which darkening existence is that they seem having bug and need to be tested.
Florian gave me his image, so i can try find the bug, but since i'm don't have deep knowledge in magma, maybe someone have time to test it with different DBs too?
P.S. Remember, you need to _load_ this package, not merge with existing. Its located in magma tester squeaksource repository
-- Best regards, Igor Stasenko AKA sig. _______________________________________________ Magma mailing list Magma@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/magma
On 22/08/07, Chris Muller asqueaker@gmail.com wrote:
Sig, does the test suite run through to completion with your new Dictionary's?
Also, how do the MagmaBenchmarker results look with it?
I was able to run only MaHashIndexRecordTester and MaHashIndexTester. Other tests require special setup, and i'm bit lost in what is required to start them. Can you give me directions how to run tests/benchmarks? I able to run benchmarks, but they not showing any results. do i need run simply [ MagmaBenchmarker runLocalBaseLine: false ] timeToRun , or i missing special tools for benchmarks?
You have small benchmarks in MaDictionary class comment. When designing my classes i used them for comparisons.
So, here with my dictionaries:
time to add to sd: 319 time to add to md: 135 time to access to sd: 107 time to access to md: 86 time to replace to sd: 81 time to replace to md: 60 time to remove 300 from sd: 21158 time to remove 300 from md: 5
Here same, with old:
time to add to sd: 322 time to add to md: 928 time to access to sd: 110 time to access to md: 531 time to replace to sd: 83 time to replace to md: 629 time to remove 300 from sd: 21540 time to remove 300 from md: 3841
On 8/21/07, Igor Stasenko siguctua@gmail.com wrote:
Hi Cris (and everyone), lately i had conversation with Florian on IRC , he says that my dictionaries is about 2 times faster than current magma ones (he gave me read/commit times of his data crunching 12s - my vs 25s - old ).
The only thing which darkening existence is that they seem having bug and need to be tested.
Florian gave me his image, so i can try find the bug, but since i'm don't have deep knowledge in magma, maybe someone have time to test it with different DBs too?
P.S. Remember, you need to _load_ this package, not merge with existing. Its located in magma tester squeaksource repository
-- Best regards, Igor Stasenko AKA sig. _______________________________________________ Magma mailing list Magma@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/magma
Ok, it seems we found a bug!!
in MaWeakValueDictionary, i added method: -- reject: aBlock 10 seconds asDelay wait. ^ super reject: aBlock --
i putted a delay in MaWeakValueDictionary>>#reject, because suspected that squeak weak finalization process interferes with MagmaOidManager dicts cleanup. After adding it, no errors appear anymore. (I run test 2 time, Florian runs 3 times in a row). He haves a pretty long update process with many commits and updates.
Of course its still under question, is dictionaries working well in other cases, but in this case it seems that bug caused by interference with other processes (i bet it weak finalization process). Why it din't shows itself before - i think because old dicts was not so fast , so other process has enough time to do things before race condition can appear.
Any ideas how to avoid putting delay there and prevent racing with other processes?
Can you give me directions how to run tests/benchmarks?
http://wiki.squeak.org/squeak/2661
I able to run benchmarks, but they not showing any results. do i need run simply [ MagmaBenchmarker runLocalBaseLine: false ] timeToRun , or i missing special tools for benchmarks?
magma@lists.squeakfoundation.org