From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12074 invoked by alias); 22 Oct 2015 12:49:59 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 36914 Received: (qmail 171 invoked from network); 22 Oct 2015 12:49:58 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=Tbw+k1f1yiaVO6tAFJG1Fe2hnyK1dYNdRGpPEa7neVo=; b=hf2ngPXqMDNoi0X/BECnIHrXgQ25mRu9uisc9qkLYOhjlg8uQD/FkqtJig1Z5OzLHB +Z+fDILS1aAjL5EcG0MPwzL6W8K1zU3adWKiOv/bW+l9EadLgTf2+1YM+K45Vu2I7iIf hQXDRPcU3YdChEu59xm05AA4QKOJi0yDN4bbxv36lw9lqZLafxk+8wweqHUG5PaFLlWV +1xcB+RJV2fp25PZwG6lY9qp+9c4or1pLh8pcieFWGgYEnowNdEe+wlJAJ9JJrcDG89Q dkfN3cFZ8tA4hS2G6MeidmofeczQkY+wE3aoAITpvlqrTfkiW3jfzn3WfEFx87xmjp8A ulRw== X-Received: by 10.180.93.8 with SMTP id cq8mr39231763wib.24.1445518194588; Thu, 22 Oct 2015 05:49:54 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <151019102117.ZM32700@torch.brasslantern.com> References: <151010105849.ZM10144@torch.brasslantern.com> <151010170623.ZM16166@torch.brasslantern.com> <151010232045.ZM12931@torch.brasslantern.com> <151011091757.ZM27755@torch.brasslantern.com> <151011103121.ZM8814@torch.brasslantern.com> <151011142204.ZM9103@torch.brasslantern.com> <151012070105.ZM15099@torch.brasslantern.com> <151012173304.ZM15477@torch.brasslantern.com> <151013085246.ZM30504@torch.brasslantern.com> <20151014142722.282d0c5a@pwslap01u.europe.root.pri> <151014092536.ZM32511@torch.brasslantern.com> <151014095009.ZM19954@torch.brasslantern.com> <151014213224.ZM15646@torch.brasslantern.com> <151015173554.ZM30733@torch.brasslantern.com> <151019102117.ZM32700@torch.brasslantern.com> From: Sebastian Gniazdowski Date: Thu, 22 Oct 2015 14:49:34 +0200 Message-ID: Subject: Re: Slowdown around 5.0.5-dev-0 To: zsh-workers@zsh.org Content-Type: multipart/mixed; boundary=f46d043892b18368ca0522b0eebf --f46d043892b18368ca0522b0eebf Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 19 October 2015 at 19:21, Bart Schaefer wrot= e: > We leave that empty arena at the end, but then on the next zhalloc() > it's still not big enough, so another one gets allocated. > > You could try removing that "else" to let the trailing block be freed > again, but then we're back to needing to compare speed as well as space > across shell versions. I removed the else, code works longer and memory is still allocated. This is seen in mem-test3.txt, where there are many samples and large numbers, and in perf-test.txt, where there noted is long running time (numbers are milliseconds) I wrote perf-test.zsh to automatically perform performance tests: https://github.com/psprint/zsh-tools/ With it and with mem-test.zsh I tested following zsh variants: - 5.0.2 osx - newheaps patch (zsh-newheaps-only) - newheaps and zhalloc patch 36836 (zsh-newheaps-zhalloc) - zhalloc and the previous patch 36834 (zsh-head-both-patches) - all three patches (zsh-newheaps-three-patches) - a 5.1.1-dev-0 clean zsh - the empty arena else removed My conclusions: - 36834 introduces high memory usage; I would suggest to use only two optimizations =E2=80=93 newheaps and zhalloc; my znavtools are instant fast with them, what's slower is searching (wrote search_test function, results attached); basically half of pattern search speedup is lost with 36834, however what's gained is beautiful memory usage, without firefox-like values for RES (~700 MB); newheaps is responsible for instant-responsivity of my script, 36836 for much faster searching =E2=80= =93 that's a good compromise - searching with patterns through very large arrays (700k) allocates 264 MB of memory regardless of zsh version; this probably tells something - still not sure why 36834 allocates much memory for the string test - newheaps makes function calls longer, but it's not a substantial difference =E2=80=93 21196 ms vs. 18549 ms Best regards, Sebastian Gniazdowski --f46d043892b18368ca0522b0eebf Content-Type: text/plain; charset=US-ASCII; name="mem-test3.txt" Content-Disposition: attachment; filename="mem-test3.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ig280zi40 IyBUZXN0cyBmb3IgenNoLWVtcHR5LWFyZW5hLWVsc2UKIyBzdHJpbmdfdGVzdCA1MSwgMTUyLCAy MDYsIDI0NywgMjgwLCAzMDUsIDMyNywgMzQ1LCAzNjMsIDM4MCwgMzk0LCA0MDcsIDQyMSwgNDMy LCA0NDQsIDQ1NSwgNDY0LCA0NzQsIDQ4MywgNDkzLCA1MDIsIDUwOSwgNTE4LCA1MjUsIDUzNCwg NTQxLCA1NDksIDU1NSwgNTYwLCA1NjksIDU3NSwgNTgxLCBsYXN0OiA1ODYKc3RyaW5nX3Rlc3Qg NDIxLjMKIyBhcnJheV90ZXN0IDEsIDIuNywgMi45LCAzLjgsIDQuMywgNS42LCA2LjUsIDcuNiwg OCwgOC40LCA4LjcsIDguOSwgbGFzdDogOS4xCmFycmF5X3Rlc3QgNS40CiMgZnVuY3Rpb25fdGVz dCAyLjYsIDIuOSwgMi43LCAyLjksIDIuOSwgMi44LCAyLjksIDIuNywgbGFzdDogMi42CmZ1bmN0 aW9uX3Rlc3QgMi44CiMgc2VhcmNoX3Rlc3QgMTEwLCAyMTUsIGxhc3Q6IDI2NApzZWFyY2hfdGVz dCAxMTAuMAoKCiMgVGVzdHMgZm9yIHpzaC1uZXdoZWFwcy16aGFsbG9jCiMgc3RyaW5nX3Rlc3Qg Mi45LCA3LjcsIDkuMywgMTEsIDExLCAxMSwgMTIsIDExLCAxMiwgMTEsIDExLCAxMSwgMTIsIGxh c3Q6IDExCnN0cmluZ190ZXN0IDEwLjEKIyBhcnJheV90ZXN0IDEsIDIsIDMuMSwgMy4zLCA0LjUs IDUuMywgNi4zLCA3LjUsIDcuOCwgOC4yLCA4LjUsIDguNywgbGFzdDogOC45CmFycmF5X3Rlc3Qg NS4yCiMgZnVuY3Rpb25fdGVzdCAyLjcsIDIuNywgMi44LCAyLjYsIDIuNiwgMi45LCAyLjksIDMs IGxhc3Q6IDIuNgpmdW5jdGlvbl90ZXN0IDIuNwojIHNlYXJjaF90ZXN0IDg2LCAxNTgsIDIwMCwg MjM3LCBsYXN0OiAyNjUKc2VhcmNoX3Rlc3QgMTQ4LjAKCgojIFRlc3RzIGZvciB6c2gtbmV3aGVh cHMtb25seQojIHN0cmluZ190ZXN0IDMsIDcuNywgOS4xLCAxMSwgMTEsIDExLCAxMiwgMTEsIDEx LCAxMSwgMTIsIDExLCAxMSwgbGFzdDogMTAKc3RyaW5nX3Rlc3QgMTAuMQojIGFycmF5X3Rlc3Qg MS40LCAyLCAzLCAzLjgsIDQuNCwgNS4zLCA2LjMsIDcsIDcuNywgOCwgOC4zLCA4LjUsIGxhc3Q6 IDguOAphcnJheV90ZXN0IDUuMgojIGZ1bmN0aW9uX3Rlc3QgMi43LCAyLjYsIDIuOCwgMi43LCAy LjksIDIuNywgMi43LCAyLjcsIGxhc3Q6IDIuNgpmdW5jdGlvbl90ZXN0IDIuNwojIHNlYXJjaF90 ZXN0IDYyLCAxMjIsIDE0NCwgMTcxLCAxOTYsIDIxOCwgMjM4LCAyNTksIGxhc3Q6IDI2NgpzZWFy Y2hfdGVzdCAxNjQuNAoKCiMgVGVzdHMgZm9yIHpzaC01LjAuMi1vc3gKIyBzdHJpbmdfdGVzdCAy LjUsIDcuNCwgOC45LCAxMSwgMTEsIDEyLCAxMSwgMTEsIDExLCAxMSwgMTIsIDEyLCBsYXN0OiAx MApzdHJpbmdfdGVzdCA5LjkKIyBhcnJheV90ZXN0IDEuNCwgMi4yLCAzLCA0LCA0LjYsIDUuMywg Ni4zLCA3LjQsIDcuOCwgOCwgOC40LCA4LjcsIGxhc3Q6IDguOAphcnJheV90ZXN0IDUuMwojIGZ1 bmN0aW9uX3Rlc3QgMi42LCAyLjYsIDIuNiwgMi42LCAyLjYsIDIuNiwgMi42LCBsYXN0OiAyLjYK ZnVuY3Rpb25fdGVzdCAyLjYKIyBzZWFyY2hfdGVzdCA1OSwgMTIyLCAxNTIsIDE3OSwgMjA0LCAy MjYsIDI0NSwgbGFzdDogMjY0CnNlYXJjaF90ZXN0IDE1Ny4wCgoKIyBUZXN0cyBmb3IgenNoLWhl YWQtYm90aC1wYXRjaGVzCiMgc3RyaW5nX3Rlc3QgNDAsIDE4MiwgMzE4LCA0NTYsIDU4OSwgNzI1 LCBsYXN0OiA5LjcKc3RyaW5nX3Rlc3QgMzE3LjAKIyBhcnJheV90ZXN0IDEuMSwgMi41LCAzLCAz LjgsIDQuMywgNSwgNiwgNywgNy41LCA3LjgsIDguMiwgOC4zLCBsYXN0OiA4LjUKYXJyYXlfdGVz dCA1LjEKIyBmdW5jdGlvbl90ZXN0IDIuNiwgMi42LCAyLjYsIDIuNiwgMi41LCAyLjYsIDIuNiwg bGFzdDogMi41CmZ1bmN0aW9uX3Rlc3QgMi42CiMgc2VhcmNoX3Rlc3QgMTIyLCAyMTcsIGxhc3Q6 IDI2NgpzZWFyY2hfdGVzdCAxMjIuMAoKCiMgVGVzdHMgZm9yIHpzaC1uZXdoZWFwcy10aHJlZS1w YXRjaGVzCiMgc3RyaW5nX3Rlc3QgNDQsIDE4OCwgMzMxLCA0NzEsIDYxMiwgbGFzdDogOC45CnN0 cmluZ190ZXN0IDI1OC41CiMgYXJyYXlfdGVzdCAxLjEsIDIsIDMuMSwgMy44LCA0LjQsIDUuMSwg Ni4yLCA3LjIsIDcuNywgOCwgOC4yLCA4LjYsIGxhc3Q6IDguNwphcnJheV90ZXN0IDUuMgojIGZ1 bmN0aW9uX3Rlc3QgMi43LCAyLjcsIDIuOSwgMi44LCAyLjksIDIuNywgMi45LCAyLjYsIGxhc3Q6 IDIuNgpmdW5jdGlvbl90ZXN0IDIuOAojIHNlYXJjaF90ZXN0IDExNiwgMjE2LCBsYXN0OiAyNjUK c2VhcmNoX3Rlc3QgMTE2LjAKCgojIFRlc3RzIGZvciB6c2gtNS4xLjEtZGV2LTAtY2xlYW4KIyBz dHJpbmdfdGVzdCAyLjYsIDcuMywgOC44LCAxMSwgMTEsIDExLCAxMCwgMTEsIDEyLCAxMSwgMTIs IDExLCBsYXN0OiAxMApzdHJpbmdfdGVzdCA5LjgKIyBhcnJheV90ZXN0IDEuMywgMi4yLCAyLjMs IDMuNCwgNC4yLCA1LCA2LjEsIDYuOSwgNy42LCA3LjgsIDguMSwgOC40LCBsYXN0OiA4LjYKYXJy YXlfdGVzdCA1LjAKIyBmdW5jdGlvbl90ZXN0IDIuNiwgMi42LCAyLjYsIDIuNiwgMi42LCAyLjYs IGxhc3Q6IDIuNgpmdW5jdGlvbl90ZXN0IDIuNgojIHNlYXJjaF90ZXN0IDYyLCAxMjEsIDE1MSwg MTc3LCAyMDEsIDIyMywgMjQzLCAyNjQsIGxhc3Q6IDI2NQpzZWFyY2hfdGVzdCAxNjguMwoKCg== --f46d043892b18368ca0522b0eebf Content-Type: text/plain; charset=US-ASCII; name="perf-test.txt" Content-Disposition: attachment; filename="perf-test.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ig2851nl1 UnVubmluZyBbenNoLWVtcHR5LWFyZW5hLWVsc2VdOiBzdHJpbmdfdGVzdCAxMzc0OSw0NwpSdW5u aW5nIFt6c2gtZW1wdHktYXJlbmEtZWxzZV06IGFycmF5X3Rlc3QgMTIxODIsMDYKUnVubmluZyBb enNoLWVtcHR5LWFyZW5hLWVsc2VdOiBmdW5jdGlvbl90ZXN0IDIxMzQ1LDY2ClJ1bm5pbmcgW3pz aC1lbXB0eS1hcmVuYS1lbHNlXTogc2VhcmNoX3Rlc3QgMzg0OSw4MAoKClJ1bm5pbmcgW3pzaC1u ZXdoZWFwcy16aGFsbG9jXTogc3RyaW5nX3Rlc3QgOTk5MCw3NQpSdW5uaW5nIFt6c2gtbmV3aGVh cHMtemhhbGxvY106IGFycmF5X3Rlc3QgMTIxMDksNjkKUnVubmluZyBbenNoLW5ld2hlYXBzLXpo YWxsb2NdOiBmdW5jdGlvbl90ZXN0IDIxMzE4LDUyClJ1bm5pbmcgW3pzaC1uZXdoZWFwcy16aGFs bG9jXTogc2VhcmNoX3Rlc3QgNjg0Miw1OAoKClJ1bm5pbmcgW3pzaC1uZXdoZWFwcy1vbmx5XTog c3RyaW5nX3Rlc3QgOTk5OSw5NwpSdW5uaW5nIFt6c2gtbmV3aGVhcHMtb25seV06IGFycmF5X3Rl c3QgMTE5MjUsMDUKUnVubmluZyBbenNoLW5ld2hlYXBzLW9ubHldOiBmdW5jdGlvbl90ZXN0IDIx MTk2LDI3ClJ1bm5pbmcgW3pzaC1uZXdoZWFwcy1vbmx5XTogc2VhcmNoX3Rlc3QgMTE2NzAsNzEK CgpSdW5uaW5nIFt6c2gtNS4wLjItb3N4XTogc3RyaW5nX3Rlc3QgOTYyOCw4NwpSdW5uaW5nIFt6 c2gtNS4wLjItb3N4XTogYXJyYXlfdGVzdCAxMjI5NCw4NQpSdW5uaW5nIFt6c2gtNS4wLjItb3N4 XTogZnVuY3Rpb25fdGVzdCAxODY2OCw0MgpSdW5uaW5nIFt6c2gtNS4wLjItb3N4XTogc2VhcmNo X3Rlc3QgMTE1MTgsMzgKCgpSdW5uaW5nIFt6c2gtaGVhZC1ib3RoLXBhdGNoZXNdOiBzdHJpbmdf dGVzdCA0Mzg1LDkzClJ1bm5pbmcgW3pzaC1oZWFkLWJvdGgtcGF0Y2hlc106IGFycmF5X3Rlc3Qg MTE5MzMsMzgKUnVubmluZyBbenNoLWhlYWQtYm90aC1wYXRjaGVzXTogZnVuY3Rpb25fdGVzdCAx ODU0OSw1NwpSdW5uaW5nIFt6c2gtaGVhZC1ib3RoLXBhdGNoZXNdOiBzZWFyY2hfdGVzdCAzOTQ5 LDQwCgoKUnVubmluZyBbenNoLW5ld2hlYXBzLXRocmVlLXBhdGNoZXNdOiBzdHJpbmdfdGVzdCA0 MzUxLDU4ClJ1bm5pbmcgW3pzaC1uZXdoZWFwcy10aHJlZS1wYXRjaGVzXTogYXJyYXlfdGVzdCAx MjExMSwyNQpSdW5uaW5nIFt6c2gtbmV3aGVhcHMtdGhyZWUtcGF0Y2hlc106IGZ1bmN0aW9uX3Rl c3QgMjEzNTYsMzAKUnVubmluZyBbenNoLW5ld2hlYXBzLXRocmVlLXBhdGNoZXNdOiBzZWFyY2hf dGVzdCA0MDYzLDczCgoKUnVubmluZyBbenNoLTUuMS4xLWRldi0wLWNsZWFuXTogc3RyaW5nX3Rl c3QgOTY1MSwwOApSdW5uaW5nIFt6c2gtNS4xLjEtZGV2LTAtY2xlYW5dOiBhcnJheV90ZXN0IDEy NzQ5LDIxClJ1bm5pbmcgW3pzaC01LjEuMS1kZXYtMC1jbGVhbl06IGZ1bmN0aW9uX3Rlc3QgMTg2 NjcsMjUKUnVubmluZyBbenNoLTUuMS4xLWRldi0wLWNsZWFuXTogc2VhcmNoX3Rlc3QgMTEzODYs MzYKCgo= --f46d043892b18368ca0522b0eebf Content-Type: application/octet-stream; name="mem-test.zsh" Content-Disposition: attachment; filename="mem-test.zsh" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ig285m4d2 IyEvYmluL3pzaAoKZW11bGF0ZSAtTCB6c2gKc2V0b3B0IGV4dGVuZGVkZ2xvYgoKenNocz0oIHpz aC1lbXB0eS1hcmVuYS1lbHNlIHpzaC1uZXdoZWFwcy16aGFsbG9jIHpzaC1uZXdoZWFwcy1vbmx5 ICkKenNocys9KCB6c2gtNS4wLjItb3N4IHpzaC1oZWFkLWJvdGgtcGF0Y2hlcyB6c2gtbmV3aGVh cHMtdGhyZWUtcGF0Y2hlcyB6c2gtNS4xLjEtZGV2LTAtY2xlYW4gKQoKIyBDb252ZXJ0IHNpemVz IHRvIG51bWJlciBvZiBtZWdhYnl0ZXMKdG9fbWJ5dGVzKCkgewogICAgbG9jYWwgc2l6ZT0iJDEi CiAgICAjZWNobyBDb252ZXJ0aW5nOiAiJDEiCiAgICBpZiBbWyAiJHNpemUiID0gWzAtOV0jW01t XSogXV07IHRoZW4KICAgICAgICBzaXplPSIke3NpemUlW01tXSp9IgogICAgZWxpZiBbWyAiJHNp emUiID0gWzAtOV0jW0trXSogXV07IHRoZW4KICAgICAgICBzaXplPSIke3NpemUlW0trXSp9Igog ICAgICAgICgoIHNpemUgPSBzaXplIC8gMTAyNC4wICkpCiAgICBlbGlmIFtbICIkc2l6ZSIgPSBb MC05XSMgXV07IHRoZW4KICAgICAgICBjYXNlICQoIHVuYW1lICkgaW4KICAgICAgICAgICAgKkxp bnV4KikKICAgICAgICAgICAgICAgICgoIHNpemUgPSBzaXplIC8gMTAyNC4wICkpCiAgICAgICAg ICAgICAgICA7OwogICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgKCggc2l6ZSA9IHNpemUg LyAoMTAyNC4wICogMTAyNC4wKSApKQogICAgICAgICAgICAgICAgOzsKICAgICAgICBlc2FjCiAg ICBlbHNlCiAgICAgICAgZWNobyAiQmFkIHNpemUgb2NjdXJlZDogJHNpemUiCiAgICBmaQoKICAg IFJFUExZPSIkc2l6ZSIKfQoKIwojIENoaWxkcmVuIGFkbWluaXN0cmF0aW9uCiMKCnRyYXAgImZp bmlzaGVkIiBTSUdVU1IxCgpmaW5pc2hlZCgpIHsKICAgIEZJTklTSEVEPTEKfQoKIyBHZXRzIG1l bW9yeSBzaXplIG9mIHRoZSB6c2ggdGhhdCBydW5zIHRoZSB0ZXN0CmdldF9tZW0oKSB7CiAgICBj YXNlICQoIHVuYW1lICkgaW4KICAgICAgICAqRGFyd2luKikKICAgICAgICAgICAgb3V0cHV0PSgg IiR7KEBmKSIkKCB0b3AgLXBpZCAiJFNVQl9QSUQiIC1zdGF0cyBtZW0gLWwgMSApIn0iICkKICAg ICAgICAgICAgdG9fbWJ5dGVzICIkb3V0cHV0Wy0xXSIKICAgICAgICAgICAgOzsKICAgICAgICAq TGludXgqKQogICAgICAgICAgICBvdXRwdXQ9KCAiJHsoQGYpIiQoIHRvcCAtcCAiJFNVQl9QSUQi IC1ibiAxICkifSIgKQogICAgICAgICAgICBvdXRwdXQ9JG91dHB1dFstMV0KICAgICAgICAgICAg b3V0cHV0PSggJD1vdXRwdXQgKQogICAgICAgICAgICB0b19tYnl0ZXMgIiRvdXRwdXRbNl0iCiAg ICAgICAgICAgIDs7CiAgICBlc2FjCn0KCiMgV2FpdHMgZm9yIHNpZ25hbCBmcm9tIGNoaWxkIHBy b2Nlc3MKd2FpdF9nZXRfbWVtKCkgewogICAgbG9jYWwgbnVtYmVyCiAgICBmbG9hdCBhdmVyYWdl PTAuMAogICAgaW50ZWdlciBjb3VudD0wCgogICAgZWNobyAtbiAiIyAkVEVTVCAiCgogICAgc2xl ZXAgMQogICAgd2hpbGUgWyAiJEZJTklTSEVEIiAtZXEgMCBdOyBkbwogICAgICAgIGdldF9tZW0K ICAgICAgICBudW1iZXI9YExBTkc9QyBwcmludGYgIiUuMWYiICIkUkVQTFkiYAogICAgICAgIGVj aG8gLW4gIiR7bnVtYmVyJS4wfSwgIgoKICAgICAgICBhdmVyYWdlKz1udW1iZXIKICAgICAgICBj b3VudCs9MQogICAgICAgIHNsZWVwIDMKICAgIGRvbmUKCiAgICAjIFJlbW92ZSBsYXN0IHJlc3Vs dCAtIHRvIGJlIGNlcnRhaW4gdGhhdCB0aGUgYXZlcmFnZQogICAgIyBpcyBvbmx5IGFib3ZlIGRh dGEgZnJvbSBhY3RpdmVseSB3b3JraW5nIHRlc3QgZnVuY3Rpb24KICAgIGlmIFsgIiRjb3VudCIg LWd0IDEgXTsgdGhlbgogICAgICAgIGF2ZXJhZ2U9YXZlcmFnZS1udW1iZXIKICAgICAgICBjb3Vu dD1jb3VudC0xCiAgICBmaQogICAgYXZlcmFnZT1hdmVyYWdlL2NvdW50CgogICAgIyBUYWtlIHRo ZSBleHBsaWNpdCBsYXN0IHJlc3VsdCwgaXQncyB0ZWxsaW5nCiAgICAjIGhvdyB6c2ggYmVoYXZl cyB3aGVuIGNvbXB1dGF0aW9uIGlzIHN0b3BwZWQKICAgIHNsZWVwIDEKICAgIGdldF9tZW0KICAg IG51bWJlcj1gTEFORz1DIHByaW50ZiAiJS4xZiIgIiRSRVBMWSJgCiAgICBlY2hvICJsYXN0OiAk e251bWJlciUuMH0iCiAgICBraWxsIC0xNSAiJFNVQl9QSUQiCgogICAgIyBTdWl0YWJsZSBmb3Ig Z251cGxvdCAtIFggWQogICAgTEFORz1DIHByaW50ZiAiJFRFU1QgJS4xZlxuIiAkYXZlcmFnZQp9 CgpfZmluaXNoZWRfc2lnbmFsX3dhaXQoKSB7CiAgICBraWxsIC1TSUdVU1IxICIkTUFJTl9QSUQi CiAgICBzbGVlcCA2MAp9CgojCiMgVGVzdHMKIwoKdGVzdHM9KCBzdHJpbmdfdGVzdCBhcnJheV90 ZXN0IGZ1bmN0aW9uX3Rlc3Qgc2VhcmNoX3Rlc3QgKQoKc3RyaW5nX3Rlc3QoKSB7CiAgICBsb2Nh bCBhPSIiCiAgICBpbnRlZ2VyIGk9MTUwMDAwCiAgICByZXBlYXQgJGk7IGRvIGErPSIkaSI7IGRv bmUKCiAgICBfZmluaXNoZWRfc2lnbmFsX3dhaXQKfQoKYXJyYXlfdGVzdCgpIHsKICAgIHR5cGVz ZXQgLWEgYQogICAgaW50ZWdlciBpPTI1MDAwCiAgICByZXBlYXQgJGk7IGRvIGErPSggJGkgKTsg ZG9uZQoKICAgIF9maW5pc2hlZF9zaWduYWxfd2FpdAp9CgpmdW5jdGlvbl90ZXN0KCkgewogICAg bG9jYWwgY291bnQKCiAgICBpZiBbIC16ICIkMSIgXTsgdGhlbgogICAgICAgIHJlcGVhdCAxMDAw MDsgZG8gZnVuY3Rpb25fdGVzdCAxMDA7IGRvbmUKICAgICAgICBfZmluaXNoZWRfc2lnbmFsX3dh aXQKICAgIGVsc2UKICAgICAgICBjb3VudD0iJDEiCiAgICBmaQoKICAgIGlmICgoIGNvdW50IC0t ID4gMCApKTsgdGhlbgogICAgICAgIGZ1bmN0aW9uX3Rlc3QgIiRjb3VudCIKICAgIGZpCn0KCnNl YXJjaF90ZXN0KCkgewogICAgaW50ZWdlciBlbGVtZW50cz03MDAwMDAKICAgIGE9IiR7KHI6ZWxl bWVudHM6OiBfOilifSIKICAgIGE9KCAkPWEgKQogICAgYT0oICIkeyhATSlhOiMoI2kpKl8qfSIg KQogICAgYT0oICIkeyhAKWEvLygjbWkpKF98YSkvLSR7TUFUQ0h9LX0iICkKICAgIGE9KCAiJHso QClhLy8oI2JpKShffC0pL3wke21hdGNoWzFdfXx9IiApCgogICAgX2ZpbmlzaGVkX3NpZ25hbF93 YWl0Cn0KCiMKIyBNYWluIGNvZGUKIwoKIyBEZXRlY3QgbWFpbiB2cy4gZm9yLXRlc3QgaW52b2Nh dGlvbgppZiBbIC16ICIkMSIgXTsgdGhlbgogICAgZm9yIGN1cnJlbnRfenNoIGluICIkenNoc1tA XSI7IGRvCiAgICAgICAgdHlwZSAiJGN1cnJlbnRfenNoIiAyPi9kZXYvbnVsbCAxPiYyIHx8IHsg ZWNobyA+JjIgIlNraXBwaW5nIG5vbi1hY2Nlc3NpYmxlICRjdXJyZW50X3pzaCI7IGNvbnRpbnVl IH0KICAgICAgICB6c2hfYmluYXJ5PSIke2N1cnJlbnRfenNoIyMqL30iCgogICAgICAgIGVjaG8g IiMgVGVzdHMgZm9yICR6c2hfYmluYXJ5IgogICAgICAgIGZvciB0ZXN0IGluICIkdGVzdHNbQF0i OyBkbwogICAgICAgICAgICBGSU5JU0hFRD0wCiAgICAgICAgICAgIFRFU1Q9IiR0ZXN0IgoKICAg ICAgICAgICAgIiRjdXJyZW50X3pzaCIgLWMgInNvdXJjZSAuLyQwICQkIFwiJGN1cnJlbnRfenNo XCIgJHRlc3QiICYKCiAgICAgICAgICAgIFNVQl9QSUQ9JCEKICAgICAgICAgICAgd2FpdF9nZXRf bWVtCiAgICAgICAgZG9uZQogICAgICAgIGVjaG8KICAgICAgICBlY2hvCgogICAgZG9uZQoKICAg ICMgRXhhbXBsZSBnbnVwbG90IGludm9jYXRpb246CiAgICAjc2V0IHN0eWxlIGRhdGEgaGlzdG9n cmFtCiAgICAjc2V0IHN0eWxlIGZpbGwgc29saWQgYm9yZGVyIHJnYiAiYmxhY2siCiAgICAjcGxv dCAicmVzdWx0IiBpbmRleCAwIHVzaW5nIDI6IHh0aWMoMSksICJyZXN1bHQiIGluZGV4IDEgdXNp bmcgMjogeHRpYygxKSwgInJlc3VsdCIgaW5kZXggMiB1c2luZyAyOiB4dGljKDEpCmVsc2UKICAg IE1BSU5fUElEPSIkMSIKICAgIHpzaF9iaW5hcnk9IiR7MiMjKi99IgogICAgc2hpZnQKICAgIHNo aWZ0CiAgICAjIEVjaG8gc3RhdHVzIG9ubHkgd2hlbiBvdXRwdXQgaXMgbm90IHRvIHRlcm1pbmFs CiAgICBbICEgLXQgMSBdICYmIGVjaG8gPiYyICJSdW5uaW5nIFskenNoX2JpbmFyeV06ICRAIgoK ICAgICMgUnVuIHRoZSB0ZXN0CiAgICBldmFsICJydW5fdGVzdCgpIHsgJEAgfSIKICAgIHJ1bl90 ZXN0CmZpCg== --f46d043892b18368ca0522b0eebf Content-Type: application/octet-stream; name="perf-test.zsh" Content-Disposition: attachment; filename="perf-test.zsh" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ig285t6q3 IyEvYmluL3pzaAoKZW11bGF0ZSAtTCB6c2gKc2V0b3B0IGV4dGVuZGVkZ2xvYgoKem1vZGxvYWQg enNoL3pwcm9mCgp6c2hzPSggenNoLWVtcHR5LWFyZW5hLWVsc2UgenNoLW5ld2hlYXBzLXpoYWxs b2MgenNoLW5ld2hlYXBzLW9ubHkgKQp6c2hzKz0oIHpzaC01LjAuMi1vc3ggenNoLWhlYWQtYm90 aC1wYXRjaGVzIHpzaC1uZXdoZWFwcy10aHJlZS1wYXRjaGVzIHpzaC01LjEuMS1kZXYtMC1jbGVh biApCgojCiMgQ2hpbGRyZW4gYWRtaW5pc3RyYXRpb24KIwoKdHJhcCAiZmluaXNoZWQiIFNJR1VT UjEKCmZpbmlzaGVkKCkgewogICAgRklOSVNIRUQ9MQp9CgojIFdhaXRzIGZvciBzaWduYWwgZnJv bSBjaGlsZCBwcm9jZXNzCndhaXRfZm9yX2VuZF9vZl90ZXN0KCkgewogICAgd2hpbGUgWyAiJEZJ TklTSEVEIiAtZXEgMCBdOyBkbwogICAgICAgIHNsZWVwIDEKICAgIGRvbmUKICAgIGtpbGwgLTE1 ICIkU1VCX1BJRCIKfQoKX2ZpbmlzaGVkX3NpZ25hbF93YWl0KCkgewogICAga2lsbCAtU0lHVVNS MSAiJE1BSU5fUElEIgogICAgc2xlZXAgNjAKfQoKIwojIFRlc3RzCiMKCnRlc3RzPSggc3RyaW5n X3Rlc3QgYXJyYXlfdGVzdCBmdW5jdGlvbl90ZXN0IHNlYXJjaF90ZXN0ICkKCmZsb2F0IG11bHRp cGxpZXI9MC41CgpzdHJpbmdfdGVzdCgpIHsKICAgIGxvY2FsIGE9IiIKICAgIGludGVnZXIgaT0k KCggMTUwMDAwKm11bHRpcGxpZXIgKSkKICAgIHJlcGVhdCAkaTsgZG8gYSs9IiRpIjsgZG9uZQp9 CgphcnJheV90ZXN0KCkgewogICAgdHlwZXNldCAtYSBhCiAgICBpbnRlZ2VyIGk9JCgoIDI1MDAw Km11bHRpcGxpZXIgKSkKICAgIHJlcGVhdCAkaTsgZG8gYSs9KCAkaSApOyBkb25lCn0KCmZ1bmN0 aW9uX3Rlc3QoKSB7CiAgICBsb2NhbCBjb3VudAogICAgaW50ZWdlciBpPSQoKCAxMDAwMCptdWx0 aXBsaWVyICkpCgogICAgaWYgWyAteiAiJDEiIF07IHRoZW4KICAgICAgICByZXBlYXQgJGk7IGRv IGZ1bmN0aW9uX3Rlc3QgMTAwOyBkb25lCiAgICBlbHNlCiAgICAgICAgY291bnQ9IiQxIgogICAg ZmkKCiAgICBpZiAoKCBjb3VudCAtLSA+IDAgKSk7IHRoZW4KICAgICAgICBmdW5jdGlvbl90ZXN0 ICIkY291bnQiCiAgICBmaQp9CgpzZWFyY2hfdGVzdCgpIHsKICAgIGludGVnZXIgZWxlbWVudHM9 JCgoIDgwMDAwMCAqIG11bHRpcGxpZXIgKSkKICAgIGE9IiR7KHI6ZWxlbWVudHM6OiBfOilifSIK ICAgIGE9KCAkPWEgKQogICAgYT0oICIkeyhATSlhOiMoI2kpKl8qfSIgKQogICAgYT0oICIkeyhA KWEvLygjbWkpKF98YSkvLSR7TUFUQ0h9LX0iICkKICAgIGE9KCAiJHsoQClhLy8oI2JpKShffC0p L3wke21hdGNoWzFdfXx9IiApCn0KCiMKIyBNYWluIGNvZGUKIwoKIyBEZXRlY3QgbWFpbiB2cy4g Zm9yLXRlc3QgaW52b2NhdGlvbgppZiBbIC16ICIkMSIgXTsgdGhlbgogICAgZm9yIGN1cnJlbnRf enNoIGluICIkenNoc1tAXSI7IGRvCiAgICAgICAgdHlwZSAiJGN1cnJlbnRfenNoIiAyPi9kZXYv bnVsbCAxPiYyIHx8IHsgZWNobyA+JjIgIlNraXBwaW5nIG5vbi1hY2Nlc3NpYmxlICRjdXJyZW50 X3pzaCI7IGNvbnRpbnVlIH0KICAgICAgICB6c2hfYmluYXJ5PSIke2N1cnJlbnRfenNoIyMqL30i CgogICAgICAgIGZvciB0ZXN0IGluICIkdGVzdHNbQF0iOyBkbwogICAgICAgICAgICBGSU5JU0hF RD0wCiAgICAgICAgICAgIFRFU1Q9IiR0ZXN0IgoKICAgICAgICAgICAgIiRjdXJyZW50X3pzaCIg LWMgInNvdXJjZSAuLyQwICQkIFwiJGN1cnJlbnRfenNoXCIgJHRlc3QiICYKCiAgICAgICAgICAg IFNVQl9QSUQ9JCEKICAgICAgICAgICAgd2FpdF9mb3JfZW5kX29mX3Rlc3QKICAgICAgICBkb25l CiAgICAgICAgZWNobwogICAgICAgIGVjaG8KCiAgICBkb25lCmVsc2UKICAgIE1BSU5fUElEPSIk MSIKICAgIHpzaF9iaW5hcnk9IiR7MiMjKi99IgogICAgc2hpZnQKICAgIHNoaWZ0CiAgICBlY2hv IC1uICJSdW5uaW5nIFskenNoX2JpbmFyeV06ICRAICIKCiAgICAjIFJ1biB0aGUgdGVzdAogICAg enByb2YgLWMKICAgICIkQCIKICAgIHpwcm9mX291dD0oICIkeyhAZikiJCggenByb2YgKSJ9IiAp CiAgICB6cHJvZl9vdXQ9IiR6cHJvZl9vdXRbM10iCiAgICB6cHJvZl9vdXQ9KCAkPXpwcm9mX291 dCApCiAgICBlY2hvICIkenByb2Zfb3V0WzNdIgoKICAgIF9maW5pc2hlZF9zaWduYWxfd2FpdApm aQo= --f46d043892b18368ca0522b0eebf--