RESOLVED FIXED 155150
bmalloc: Use List<T> instead of Vector<T> in some places
https://bugs.webkit.org/show_bug.cgi?id=155150
Summary bmalloc: Use List<T> instead of Vector<T> in some places
Geoffrey Garen
Reported 2016-03-07 17:04:48 PST
bmalloc: Use List<T> instead of Vector<T> in some places
Attachments
Patch (10.30 KB, patch)
2016-03-07 18:10 PST, Geoffrey Garen
no flags
Patch (13.17 KB, patch)
2016-03-07 18:12 PST, Geoffrey Garen
kling: review+
Geoffrey Garen
Comment 1 2016-03-07 18:10:26 PST
Geoffrey Garen
Comment 2 2016-03-07 18:11:17 PST
~/OpenSource/PerformanceTests/MallocBench> ./run-malloc-benchmarks Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/ Baseline Patch Δ Execution Time: churn 84ms 83ms ^ 1.01x faster list_allocate 74ms 73ms ^ 1.01x faster tree_allocate 83ms 80ms ^ 1.04x faster tree_churn 85ms 86ms ! 1.01x slower fragment 76ms 74ms ^ 1.03x faster fragment_iterate 61ms 62ms ! 1.02x slower medium 197ms 191ms ^ 1.03x faster big 145ms 145ms facebook 126ms 122ms ^ 1.03x faster reddit 103ms 101ms ^ 1.02x faster flickr 103ms 104ms ! 1.01x slower theverge 137ms 135ms ^ 1.01x faster nimlang 14ms 13ms ^ 1.08x faster message_one 221ms 212ms ^ 1.04x faster message_many 120ms 115ms ^ 1.04x faster churn --parallel 39ms 38ms ^ 1.03x faster list_allocate --parallel 73ms 66ms ^ 1.11x faster tree_allocate --parallel 85ms 87ms ! 1.02x slower tree_churn --parallel 87ms 86ms ^ 1.01x faster fragment --parallel 53ms 49ms ^ 1.08x faster fragment_iterate --parallel 32ms 31ms ^ 1.03x faster medium --parallel 187ms 189ms ! 1.01x slower big --parallel 135ms 134ms ^ 1.01x faster <geometric mean> 87ms 85ms ^ 1.02x faster <arithmetic mean> 101ms 99ms ^ 1.02x faster <harmonic mean> 69ms 66ms ^ 1.04x faster Peak Memory: churn 804kB 788kB ^ 1.02x smaller list_allocate 2,120kB 2,088kB ^ 1.02x smaller tree_allocate 5,492kB 5,448kB ^ 1.01x smaller tree_churn 4,800kB 4,756kB ^ 1.01x smaller fragment 7,004kB 6,996kB ^ 1.0x smaller fragment_iterate 25,596kB 25,576kB ^ 1.0x smaller medium 1,068,420kB 1,068,416kB ^ 1.0x smaller big 1,060,464kB 1,060,456kB ^ 1.0x smaller facebook 19,616kB 19,212kB ^ 1.02x smaller reddit 9,944kB 9,460kB ^ 1.05x smaller flickr 15,492kB 15,028kB ^ 1.03x smaller theverge 18,696kB 18,280kB ^ 1.02x smaller nimlang 18,872kB 18,340kB ^ 1.03x smaller message_one 4,776kB 4,608kB ^ 1.04x smaller message_many 4,904kB 4,980kB ! 1.02x bigger churn --parallel 968kB 936kB ^ 1.03x smaller list_allocate --parallel 2,176kB 2,164kB ^ 1.01x smaller tree_allocate --parallel 3,360kB 3,268kB ^ 1.03x smaller tree_churn --parallel 3,004kB 2,992kB ^ 1.0x smaller fragment --parallel 7,168kB 7,164kB ^ 1.0x smaller fragment_iterate --parallel 25,736kB 25,736kB medium --parallel 1,066,128kB 1,067,544kB ! 1.0x bigger big --parallel 1,058,660kB 1,054,484kB ^ 1.0x smaller <geometric mean> 14,931kB 14,736kB ^ 1.01x smaller <arithmetic mean> 192,791kB 192,553kB ^ 1.0x smaller <harmonic mean> 4,316kB 4,237kB ^ 1.02x smaller Memory at End: churn 392kB 380kB ^ 1.03x smaller list_allocate 424kB 396kB ^ 1.07x smaller tree_allocate 468kB 432kB ^ 1.08x smaller tree_churn 452kB 420kB ^ 1.08x smaller fragment 456kB 448kB ^ 1.02x smaller fragment_iterate 640kB 628kB ^ 1.02x smaller medium 4,612kB 4,612kB big 4,596kB 4,592kB ^ 1.0x smaller facebook 3,028kB 2,640kB ^ 1.15x smaller reddit 2,164kB 1,684kB ^ 1.29x smaller flickr 3,148kB 2,692kB ^ 1.17x smaller theverge 3,168kB 2,764kB ^ 1.15x smaller nimlang 18,208kB 17,684kB ^ 1.03x smaller message_one 684kB 768kB ! 1.12x bigger message_many 1,148kB 1,104kB ^ 1.04x smaller churn --parallel 556kB 528kB ^ 1.05x smaller list_allocate --parallel 604kB 576kB ^ 1.05x smaller tree_allocate --parallel 700kB 672kB ^ 1.04x smaller tree_churn --parallel 1,136kB 1,096kB ^ 1.04x smaller fragment --parallel 1,276kB 1,280kB ! 1.0x bigger fragment_iterate --parallel 844kB 852kB ! 1.01x bigger medium --parallel 4,748kB 4,752kB ! 1.0x bigger big --parallel 4,724kB 4,712kB ^ 1.0x smaller <geometric mean> 1,366kB 1,303kB ^ 1.05x smaller <arithmetic mean> 2,529kB 2,422kB ^ 1.04x smaller <harmonic mean> 905kB 868kB ^ 1.04x smaller ===== ~/OpenSource/PerformanceTests/MallocBench> ./run-malloc-benchmarks Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/ Baseline Patch Δ Peak Memory: reddit_memory_warning --runs 0 9,868kB 9,340kB ^ 1.06x smaller flickr_memory_warning --runs 0 15,428kB 14,892kB ^ 1.04x smaller theverge_memory_warning --runs 0 18,612kB 18,200kB ^ 1.02x smaller <geometric mean> 14,151kB 13,629kB ^ 1.04x smaller <arithmetic mean> 14,636kB 14,144kB ^ 1.03x smaller <harmonic mean> 13,644kB 13,091kB ^ 1.04x smaller Memory at End: reddit_memory_warning --runs 0 7,828kB 7,304kB ^ 1.07x smaller flickr_memory_warning --runs 0 10,312kB 9,796kB ^ 1.05x smaller theverge_memory_warning --runs 0 16,920kB 16,520kB ^ 1.02x smaller <geometric mean> 11,095kB 10,573kB ^ 1.05x smaller <arithmetic mean> 11,687kB 11,207kB ^ 1.04x smaller <harmonic mean> 10,570kB 10,016kB ^ 1.06x smaller
Geoffrey Garen
Comment 3 2016-03-07 18:12:45 PST
Geoffrey Garen
Comment 4 2016-03-07 18:16:57 PST
The performance numbers posted above disable large allocations in recorded benchmarks. Here are the results with large allocations enabled: ~/OpenSource/PerformanceTests/MallocBench> ./run-malloc-benchmarks Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/ Baseline Patch Δ Execution Time: churn 85ms 82ms ^ 1.04x faster list_allocate 73ms 72ms ^ 1.01x faster tree_allocate 83ms 81ms ^ 1.02x faster tree_churn 87ms 84ms ^ 1.04x faster fragment 76ms 71ms ^ 1.07x faster fragment_iterate 60ms 60ms medium 206ms 188ms ^ 1.1x faster big 147ms 141ms ^ 1.04x faster facebook 248ms 251ms ! 1.01x slower reddit 120ms 119ms ^ 1.01x faster flickr 126ms 122ms ^ 1.03x faster theverge 156ms 153ms ^ 1.02x faster nimlang 135ms 136ms ! 1.01x slower message_one 223ms 212ms ^ 1.05x faster message_many 127ms 115ms ^ 1.1x faster churn --parallel 38ms 38ms list_allocate --parallel 77ms 65ms ^ 1.18x faster tree_allocate --parallel 86ms 84ms ^ 1.02x faster tree_churn --parallel 85ms 84ms ^ 1.01x faster fragment --parallel 51ms 49ms ^ 1.04x faster fragment_iterate --parallel 32ms 32ms medium --parallel 191ms 188ms ^ 1.02x faster big --parallel 133ms 133ms <geometric mean> 101ms 98ms ^ 1.03x faster <arithmetic mean> 115ms 111ms ^ 1.03x faster <harmonic mean> 87ms 85ms ^ 1.03x faster Peak Memory: churn 804kB 792kB ^ 1.02x smaller list_allocate 2,104kB 2,092kB ^ 1.01x smaller tree_allocate 5,480kB 5,456kB ^ 1.0x smaller tree_churn 4,800kB 4,760kB ^ 1.01x smaller fragment 7,004kB 7,000kB ^ 1.0x smaller fragment_iterate 25,596kB 25,580kB ^ 1.0x smaller medium 1,068,420kB 1,068,416kB ^ 1.0x smaller big 1,060,464kB 1,060,460kB ^ 1.0x smaller facebook 73,948kB 73,428kB ^ 1.01x smaller reddit 13,836kB 13,368kB ^ 1.04x smaller flickr 25,848kB 25,316kB ^ 1.02x smaller theverge 27,016kB 26,436kB ^ 1.02x smaller nimlang 217,332kB 216,900kB ^ 1.0x smaller message_one 4,876kB 4,636kB ^ 1.05x smaller message_many 14,288kB 4,956kB ^ 2.88x smaller churn --parallel 956kB 940kB ^ 1.02x smaller list_allocate --parallel 2,200kB 2,200kB tree_allocate --parallel 3,352kB 3,296kB ^ 1.02x smaller tree_churn --parallel 3,004kB 3,000kB ^ 1.0x smaller fragment --parallel 7,168kB 7,148kB ^ 1.0x smaller fragment_iterate --parallel 25,760kB 25,720kB ^ 1.0x smaller medium --parallel 1,065,664kB 1,064,996kB ^ 1.0x smaller big --parallel 1,051,744kB 1,058,760kB ! 1.01x bigger <geometric mean> 19,424kB 18,386kB ^ 1.06x smaller <arithmetic mean> 204,855kB 204,594kB ^ 1.0x smaller <harmonic mean> 4,557kB 4,388kB ^ 1.04x smaller Memory at End: churn 392kB 380kB ^ 1.03x smaller list_allocate 408kB 396kB ^ 1.03x smaller tree_allocate 456kB 436kB ^ 1.05x smaller tree_churn 452kB 420kB ^ 1.08x smaller fragment 456kB 448kB ^ 1.02x smaller fragment_iterate 640kB 628kB ^ 1.02x smaller medium 4,608kB 4,608kB big 4,596kB 4,592kB ^ 1.0x smaller facebook 3,320kB 2,804kB ^ 1.18x smaller reddit 2,212kB 1,740kB ^ 1.27x smaller flickr 3,248kB 2,724kB ^ 1.19x smaller theverge 3,324kB 2,752kB ^ 1.21x smaller nimlang 34,188kB 33,788kB ^ 1.01x smaller message_one 684kB 672kB ^ 1.02x smaller message_many 1,256kB 1,080kB ^ 1.16x smaller churn --parallel 544kB 528kB ^ 1.03x smaller list_allocate --parallel 612kB 564kB ^ 1.09x smaller tree_allocate --parallel 712kB 660kB ^ 1.08x smaller tree_churn --parallel 1,136kB 1,172kB ! 1.03x bigger fragment --parallel 1,332kB 1,328kB ^ 1.0x smaller fragment_iterate --parallel 864kB 836kB ^ 1.03x smaller medium --parallel 4,736kB 4,736kB big --parallel 4,684kB 4,716kB ! 1.01x bigger <geometric mean> 1,422kB 1,340kB ^ 1.06x smaller <arithmetic mean> 3,255kB 3,131kB ^ 1.04x smaller <harmonic mean> 908kB 865kB ^ 1.05x smaller ===== ~/OpenSource/PerformanceTests/MallocBench> ./run-malloc-benchmarks Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/ Baseline Patch Δ Peak Memory: reddit_memory_warning --runs 0 13,804kB 13,360kB ^ 1.03x smaller flickr_memory_warning --runs 0 26,032kB 25,560kB ^ 1.02x smaller theverge_memory_warning --runs 0 26,920kB 26,468kB ^ 1.02x smaller <geometric mean> 21,307kB 20,830kB ^ 1.02x smaller <arithmetic mean> 22,252kB 21,796kB ^ 1.02x smaller <harmonic mean> 20,270kB 19,769kB ^ 1.03x smaller Memory at End: reddit_memory_warning --runs 0 9,284kB 8,828kB ^ 1.05x smaller flickr_memory_warning --runs 0 12,320kB 11,848kB ^ 1.04x smaller theverge_memory_warning --runs 0 21,212kB 20,740kB ^ 1.02x smaller <geometric mean> 13,437kB 12,945kB ^ 1.04x smaller <arithmetic mean> 14,272kB 13,805kB ^ 1.03x smaller <harmonic mean> 12,711kB 12,200kB ^ 1.04x smaller
Andreas Kling
Comment 5 2016-03-07 18:22:01 PST
Comment on attachment 273252 [details] Patch r=me!
Geoffrey Garen
Comment 6 2016-03-07 19:00:48 PST
Csaba Osztrogonác
Comment 7 2016-03-07 22:24:41 PST
(In reply to comment #6) > Committed r197722: <http://trac.webkit.org/changeset/197722> It made many JSC stress tests crash on 32 bit Linux platforms, see the X86 GTK and the EFL ARMv7 bots on build.webkit.org for details.
Csaba Osztrogonác
Comment 8 2016-03-08 00:54:50 PST
(In reply to comment #7) > (In reply to comment #6) > > Committed r197722: <http://trac.webkit.org/changeset/197722> > > It made many JSC stress tests crash on 32 bit Linux platforms, see the X86 > GTK and the EFL ARMv7 bots on build.webkit.org for details. and on the 32 bit x86 Apple Mac bots too
Csaba Osztrogonác
Comment 10 2016-03-08 08:54:54 PST
ping
WebKit Commit Bot
Comment 11 2016-03-08 09:34:04 PST
Re-opened since this is blocked by bug 155171
Geoffrey Garen
Comment 12 2016-03-08 13:21:56 PST
Note You need to log in before you can comment on or make changes to this bug.