SearchTagsPoll |
Detailed memory consumption of some popular sites. Poor good old malloc, everyone's beast of burden.It is time to try out my new freya tool. Only some web-sites and a fresh Qt (4.6.0) and QtWebKit (r51481) are needed. The values are peak memory consumptions, which is not necessary the best choice (since the sum of their total value is greater than the peak memory consumption), but at least we can see the memory hungry parts of QtWebKit. Note: The numbers are depending on the grouping rules. I tried to improve them as far as I could, but I feel there is still room for improvement. For example, it would be interesting to see the total memory consumption of image handling, but it is scattered through many files in many directories. http://www.google.com Total: 3.8Mb
libfreetype: 293.4Kb Qt: 1.1Mb
QX11PixmapData::fromImage (qpixmap_x11.cpp:648) 118.5Kb Qt-corelib: 312.5Kb
Qt-network: 125.7Kb WebKit: 1.0Mb
JSC::Identifier::add (Identifier.cpp:54) 42.7Kb WebCore-other: 307.7Kb
WebCore-page: 92.9Kb http://www.bbc.co.uk Total: 10.2Mb
WebCore::TextResourceDecoder::decode (TextResourceDecoder.cpp:826) 398.4Kb WebCore::ResourceLoader::addData (ResourceLoader.cpp:185) 390.1Kb JavaScriptCore: 1.6Mb
JSC::BytecodeGenerator::generate (BytecodeGenerator.cpp:163) 184.2Kb JSC::Identifier::add (Identifier.cpp:54) 116.4Kb WebCore-page: 563.4Kb
WebCore::HTMLTokenizer::enlargeScriptBuffer (HTMLTokenizer.cpp:1996) 117.7Kb WebCore-rendering: 434.0Kb
WebCore-css: 415.4Kb
Qt: 4.4Mb
QImageData::create (qimage.cpp:242) 808.9Kb Qt-corelib: 637.6Kb
Qt-network: 567.7Kb
libs: 2.0Mb http://maps.google.com Total: 9.0Mb
JSC::BytecodeGenerator::generate (BytecodeGenerator.cpp:163) 620.8Kb JSC::ParserArena::allocateFreeablePool (390.6Kb) ParserArena.cpp:104 JSC::Identifier::add (Identifier.cpp:54) 281.8Kb WebCore-other: 2.3Mb
WebCore::SharedBuffer::SharedBuffer (SharedBuffer.cpp:39) 274.5Kb WebCore-page: 603.6Kb
WebCore-css: 302.8Kb
WebCore-rendering: 148.5Kb libs: 1.9Mb
QX11PixmapData::fromImage (qpixmap_x11.cpp:648) 256.0Kb Qt-corelib: 367.8Kb
Qt-network: 209.9Kb http://sourceforge.net Total: 18.3Mb
libxcb.so.1.0.0 3.9Mb Both of them called from: QX11PixmapData::toImage (qpixmap_x11.cpp:1475) Qt: 9.1Mb
QImageData::create (qimage.cpp:242) 5.3Mb Qt-corelib: 679.9Kb
Qt-network: 423.6Kb WebKit: 7.5Mb
JSC::Structure::copyPropertyTable (Structure.cpp:647) 422.0Kb JSC::BytecodeGenerator::generate (BytecodeGenerator.cpp:163) 374.0Kb JSC::Interpreter::execute (Interpreter.cpp:681) 316.5Kb WebCore-other: 3.4Mb
WebCore::CachedScriptSourceProvider::length (CachedScriptSourceProvider.h:48) 687.9Kb WebCore::CachedScriptSourceProvider::data (CachedScriptSourceProvider.h:47) 657.5Kb WebCore-page: 969.7Kb
WebCore::HTMLTokenizer::enlargeScriptBuffer (HTMLTokenizer.cpp:1996) 232.3Kb WebCore-css: 514.5Kb
WebCore-rendering: 222.0Kb www.facebook.com Total: 11.7Mb
QFreetypeFace::getFace (qfontengine_ft.cpp:238) 2.0Mb QX11PixmapData::fromImage (qpixmap_x11.cpp:648) 1.8Mb Qt-corelib: 436.5Kb
QIODevice::read (qiodevice.cpp:943) 128.0Kb Qt-network: 384.2Kb
Qt-other: 69.8Kb WebKit: 4.1Mb
WebCore::SharedBuffer::SharedBuffer (SharedBuffer.cpp:39) 764.4Kb JavaScriptCore: 1.6Mb
JSC::Identifier::add (Identifier.cpp:54) 218.5Kb WebCore-css: 638.0Kb
WebCore-page: 254.1Kb libs: 1.8Mb Side story: During the measurement, the guys here replaced my Qt 4.5.2 to 4.6.0. (Caused me a lot of trouble... grrr) However, it turns out that the memory consumption of Qt 4.6.0 improved a lot compared to 4.5.2 (especially the network and gif handling). www.google.com: 2.5Mb decreased to 1.1Mb in 4.6.0 (Total: 3.8Mb from 5.6Mb) The freya configuration file is attached to this post.
|
BenchmarkLinux - x86Monthly archive
|
lu_zero (not verified) - 12/09/2009 - 08:06
Freya itself looks impressive and the webkit results are nice as well, have you considered having it included in valgrind?
PS: your captcha isn't human parsable...
Arturo (not verified) - 08/18/2010 - 18:38
Isn't it value "Leak" (alloc - dealloc) probably the best value to look for memory consumption? Instead of leak, naming it may help to call something like UsedMem and call fr_sort_and_dump at regular intervals to see the memory usage.
Post new comment