Hi, this week not much time left for some interesting work on Pharo. Some notes: With Marcus, we were looking at the resurrecting of the old possibility to place method source code directly into the method trailer so it is stored as byte array at the end of the compiled method. Because no new object is needed for the method code, it does not cause more stress on the GC and it is the very natural way how to store code. Surprisingly it was slower than currently used access to the method source stored on disk. It shows how optimized the current way is. Because most of the time was spent on UTF-8 conversion of the code, we decided to introduce a new method trailer kind for the wide strings and for the standard strings to do not do any conversion at all. For details see the e-mail "Speed up #embeddSourceInTrailer read and write" by Marcus. I came across an interesting case when the internal representation of a dictionary and hash construction has an unexpected performance effect. Let's have an identity set where keys are words and values are identity sets of sentences that contain these words. Then you want to sort them by value size to see what words are the most used. The performance is surprisingly dependent on sorting order. [ identityWordsDict associations asSortedCollection: [ :a :b | a value size <= b value size ] ] timeToRun. "0:00:09:26.149" ..but if you swap order: [ identityWordsDict associations asSortedCollection: [ :a :b | a value size > b value size ] ] timeToRun. "0:00:00:00.476" I find it during analysis of about 4.5 millions of french sentences from a large set of books. The goal was to gain the frequency analysis of the word forms and be able to collect supporting study material for foreign words learning. You can select the words you know and find a large set of long example sentences that contain only them to see the words in usage and practice them. Then you can select a new word and generate a new set of sentences that contain it together with words you already know. And this way to incrementally learn the language. The image with the data has over 2 GB so it was a nice opportunity to see how Pharo and the collections behave in such conditions. Cheers, -- Pavel
participants (1)
-
Pavel Krivanek