From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10824 invoked by alias); 26 Feb 2017 12:06:51 -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: 40649 Received: (qmail 5505 invoked from network); 26 Feb 2017 12:06:51 -0000 X-Qmail-Scanner-Diagnostics: from new1-smtp.messagingengine.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(66.111.4.221):SA:0(-0.4/5.0):. Processed in 1.228611 secs); 26 Feb 2017 12:06:51 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: psprint2@fastmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at spf.messagingengine.com designates 66.111.4.221 as permitted sender) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=fastmail.com; h= content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= mesmtp; bh=rCfCJFGPK0lzeQjMz/pAJlLBGQQ=; b=L2yRt7+bY7/NPQYZgRpfg eXa1KF/ivH7bHqAOOtG0yLufbMYgsdyjmOKIY3uhHg5WexqpD4J0mZDru7HrHo6T 4sEMYLCSztfRMl3MtpG5FWgiNS3RWXZ0XnldMei2UWJ0mYS39YJ7KINDx4vWZpqA o3zYxSZoFkShyLNgjjCOCc= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:message-id:mime-version:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=smtpout; bh=rCfCJFGPK0lzeQjMz/pAJlLBG QQ=; b=pv84Pj2bY4Z/RGZga9WznxxjmnjQuGr3b9D96O//6FnxxXlotm4HYGX+u EDhYYEmgqTkx4W5e+6DwkeJjVR09BLT+HFW1vv6qXCt3FCTSwOAejeJUyHw9vg1w DxPxXo25cL+UO8/QCGXh05QTf3ep0VvMx5VjKIxExVvtMiZlt8= X-ME-Sender: Message-Id: <1488110804.4168166.893166432.40AFA0C2@webmail.messagingengine.com> From: Sebastian Gniazdowski To: zsh-workers@zsh.org MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_148811080441681660" X-Mailer: MessagingEngine.com Webmail Interface - ajax-715c2c0c Subject: [PATCH] zrealloc on array+=( ) Date: Sun, 26 Feb 2017 04:06:44 -0800 --_----------=_148811080441681660 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Hello, optimization that finally targets much common use case and can sometimes lead to faster Zsh startup. fun() { local -a arr repeat 1000; arr+=3D( "The appended test string of medium length" ); } local -F SECONDS=3D0; fun; echo $SECONDS 100 milliseconds vs 4 milliseconds. Just 1000 repetitions. For 5000, it is 2.2 seconds vs 4 milliseconds. I aggregate logs during startup, but didn't get gain as I forgot that I aggregate as strings (~1000 $'\n' entries). Other tests shown that this is best aggregation available =E2=80=93=C2=A0strings. So I'm in luck. But n= ow there could be superior and expected array aggregation. --=20 Sebastian Gniazdowski psprint2@fastmail.com --_----------=_148811080441681660 Content-Disposition: attachment; filename="array_zrealloc.diff" Content-Id: <1488110768.4167603.21803597d5b532a6e6f0b9c8a39730cace3021ea.1E356C1F@content.messagingengine.com> Content-Transfer-Encoding: base64 Content-Type: text/plain; name="array_zrealloc.diff" ZGlmZiAtLWdpdCBhL1NyYy9wYXJhbXMuYyBiL1NyYy9wYXJhbXMuYwppbmRl eCAxOWNiYjFjLi4yYWYyNGI1IDEwMDY0NAotLS0gYS9TcmMvcGFyYW1zLmMK KysrIGIvU3JjL3BhcmFtcy5jCkBAIC0yNzIzLDI0ICsyNzIzLDU4IEBAIHNl dGFycnZhbHVlKFZhbHVlIHYsIGNoYXIgKip2YWwpCiAJCSpwKysgPSAqcisr OwogCSAgICB9CiAJfSBlbHNlIHsKLQkgICAgcCA9IG5ldyA9IChjaGFyICoq KSB6YWxsb2Moc2l6ZW9mKGNoYXIgKikKLQkJCQkgICAgICAgKiAocG9zdF9h c3NpZ25tZW50X2xlbmd0aCArIDEpKTsKLQotCSAgICBmb3IgKGkgPSAwOyBp IDwgdi0+c3RhcnQ7IGkrKykKLQkJKnArKyA9IGkgPCBwcmVfYXNzaWdubWVu dF9sZW5ndGggPyB6dHJkdXAoKnErKykgOiB6dHJkdXAoIiIpOwotCSAgICBm b3IgKHIgPSB2YWw7ICpyOykgewotCQkvKiBHaXZlIGF3YXkgb3duZXJzaGlw IG9mIHRoZSBzdHJpbmcgKi8KLQkJKnArKyA9ICpyKys7Ci0JICAgIH0KLQkg ICAgaWYgKHYtPmVuZCA8IHByZV9hc3NpZ25tZW50X2xlbmd0aCkKLQkJZm9y IChxID0gb2xkICsgdi0+ZW5kOyAqcTspCi0JCSAgICAqcCsrID0genRyZHVw KCpxKyspOwotCSAgICAqcCA9IE5VTEw7CisgICAgICAgICAgICAvKiBhcnIr PSggLi4uICkKKyAgICAgICAgICAgICAqIGFyclskeyNhcnJ9K3gsLi4uXSA9 ICovCisgICAgICAgICAgICBpZiAocG9zdF9hc3NpZ25tZW50X2xlbmd0aCA+ IHByZV9hc3NpZ25tZW50X2xlbmd0aCAmJgorICAgICAgICAgICAgICAgICAg ICBwcmVfYXNzaWdubWVudF9sZW5ndGggPD0gdi0+c3RhcnQgJiYKKyAgICAg ICAgICAgICAgICAgICAgcHJlX2Fzc2lnbm1lbnRfbGVuZ3RoID4gMCAmJgor ICAgICAgICAgICAgICAgICAgICB2LT5wbS0+Z3N1LmEtPnNldGZuID09IGFy cnNldGZuKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHAgPSBu ZXcgPSAoY2hhciAqKikgenJlYWxsb2Mob2xkLCBzaXplb2YoY2hhciAqKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICog KHBvc3RfYXNzaWdubWVudF9sZW5ndGggKyAxKSk7CisKKyAgICAgICAgICAg ICAgICBwICs9IHByZV9hc3NpZ25tZW50X2xlbmd0aDsgLyogYWZ0ZXIgb2xk IGVsZW1lbnRzICovCisKKyAgICAgICAgICAgICAgICAvKiBDb25zaWRlciAx IDwgMCwgY2FzZSBmb3IgYT0oIDEgKTsgYVsxLC4uXSA9CisgICAgICAgICAg ICAgICAgICogICAgICAgICAgMSA8IDEsIGNhc2UgZm9yIGE9KCAxICk7IGFb MiwuLl0gPSAqLworICAgICAgICAgICAgICAgIGlmIChwcmVfYXNzaWdubWVu dF9sZW5ndGggPCB2LT5zdGFydCkgeworICAgICAgICAgICAgICAgICAgICAv KiBBYm92ZSA8PSBpbXBsaWVzIHdlIHNob3VsZCBydW4gZm9yIGkgPCB2LT5z dGFydCAqLworICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBwcmVfYXNz aWdubWVudF9sZW5ndGg7IGkgPCB2LT5zdGFydDsgaSsrKSB7CisgICAgICAg ICAgICAgICAgICAgICAgICAqcCsrID0genRyZHVwKCIiKTsKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgICAgIGZvciAociA9IHZhbDsgKnI7KSB7CisgICAgICAgICAgICAgICAg ICAgIC8qIEdpdmUgYXdheSBvd25lcnNoaXAgb2YgdGhlIHN0cmluZyAqLwor ICAgICAgICAgICAgICAgICAgICAqcCsrID0gKnIrKzsKKyAgICAgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiB2LT5lbmQgZG9lc24ndCBt YXR0ZXI6CisgICAgICAgICAgICAgICAgICogYT0oIDEgMiApOyBhWzQsMTAw XT0oIGEgYiApOyBlY2hvICIkeyhxQClhfSIKKyAgICAgICAgICAgICAgICAg KiAxIDIgJycgYSBiICovCisgICAgICAgICAgICAgICAgKnAgPSBOVUxMOwor CisgICAgICAgICAgICAgICAgdi0+cG0tPnUuYXJyID0gTlVMTDsKKyAgICAg ICAgICAgICAgICB2LT5wbS0+Z3N1LmEtPnNldGZuKHYtPnBtLCBuZXcpOwor ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwID0gbmV3 ID0gKGNoYXIgKiopIHphbGxvYyhzaXplb2YoY2hhciAqKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogKHBvc3RfYXNz aWdubWVudF9sZW5ndGggKyAxKSk7CisgICAgICAgICAgICAgICAgZm9yIChp ID0gMDsgaSA8IHYtPnN0YXJ0OyBpKyspCisgICAgICAgICAgICAgICAgICAg ICpwKysgPSBpIDwgcHJlX2Fzc2lnbm1lbnRfbGVuZ3RoID8genRyZHVwKCpx KyspIDogenRyZHVwKCIiKTsKKyAgICAgICAgICAgICAgICBmb3IgKHIgPSB2 YWw7ICpyOykgeworICAgICAgICAgICAgICAgICAgICAvKiBHaXZlIGF3YXkg b3duZXJzaGlwIG9mIHRoZSBzdHJpbmcgKi8KKyAgICAgICAgICAgICAgICAg ICAgKnArKyA9ICpyKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgIGlmICh2LT5lbmQgPCBwcmVfYXNzaWdubWVudF9sZW5ndGgpCisg ICAgICAgICAgICAgICAgICAgIGZvciAocSA9IG9sZCArIHYtPmVuZDsgKnE7 KQorICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IHp0cmR1cCgqcSsr KTsKKyAgICAgICAgICAgICAgICAqcCA9IE5VTEw7CisKKyAgICAgICAgICAg ICAgICB2LT5wbS0+Z3N1LmEtPnNldGZuKHYtPnBtLCBuZXcpOworICAgICAg ICAgICAgfQogCiAJICAgIERQVVRTMihwIC0gbmV3ICE9IHBvc3RfYXNzaWdu bWVudF9sZW5ndGgsICJzZXRhcnJ2YWx1ZTogd3JvbmcgYWxsb2NhdGlvbjog JWQgMT0gJWx1IiwKIAkJICAgcG9zdF9hc3NpZ25tZW50X2xlbmd0aCwgKHVu c2lnbmVkIGxvbmcpKHAgLSBuZXcpKTsKLQotCSAgICB2LT5wbS0+Z3N1LmEt PnNldGZuKHYtPnBtLCBuZXcpOwogCX0KIAogICAgICAgICAvKiBPd25lcnNo aXAgb2YgYWxsIHN0cmluZ3MgaGFzIGJlZW4K --_----------=_148811080441681660--