On 19 December 2017 at 00:35, Andreas Brodbeck <dassi@mindclue.ch> wrote:
Hi all!
I have a performance problem with Fuel (latest stable) on a Pharo 6.1 (32bit) on Ubuntu 16.04.3 LTS. The serialization and storage to disk of 70MB of data takes more than 6 minutes! While the same task on an equally powerful Mac takes only 1.5 minutes.
My observation was, that on Linux it is very very slow while writing the file. The first 30MB of the file are written very fast, but after that the writing speed drops dramatically.
On the same Linux server, but the application running on an old Pharo 1.4, the serialization was always as fast as on the Mac.
Attached you see an excerpt of the Pharo Time profiler output for the serialization. The profiling tree looks the same on the Mac, just with faster times.
What could be the hidden speed eating secret on Linux for Pharo6.1? I have absolutely no idea where to search! Memory? Streams? File writing support? Something inside Fuel?
On 19 December 2017 at 03:45, Henrik-Nergaard <draagren@outlook.com> wrote:
Hi Andreas,
It looks like you may have problems with hash collisions FLLargeIdentityDictionary. What are the tally sizes of the FLLargeIdentityDicitonary used when you serialize? (If these have a tally larger than ~ 75% of the available size (4096 items), then there may well be some performance loss).
You could check if file writing is the problem by measuring the time it takes to only serialize in memory. You can try to use: "FLSerializer serializeToByteArray: " and see if it gives better performance?
side comment: I wonder what could be the performance of hooking #serializeToByteArray: up directly to mmap ? * http://forum.world.st/Pharo-Shared-Memory-with-C-executable-td4921928.html * http://forum.world.st/ANN-CPPBridge-One-Ring-to-rule-them-ALL-td4922275.html... cheers -ben