From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15782 invoked by alias); 4 Mar 2017 13:47:46 -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: 40718 Received: (qmail 14401 invoked from network); 4 Mar 2017 13:47:46 -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.356182 secs); 04 Mar 2017 13:47:46 -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: psprint3@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=goJ1zQXvI0chBLHfbA6yta/niho=; b=cU2amkrSLImrCmK8ieLQz JcejLongJkmxi+NzRvNHBHCZp5E+c7uvZPFFIO2TD0Hpd2gnK8E094UoncQcgQSC 7Eb1P4Br45J9hTGrD1iWy0/twOdhv4Yba6knsFjYYHk4b539aA8z2oBU5osubiX4 01fNZHXt6KNnHGSC1gLsyE= 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=goJ1zQXvI0chBLHfbA6yta/ni ho=; b=elFxCkJyNpOuW1E67UM4fpVvXL+jLY8Moyez9TMR2Lpftv8C9hq2y+8KF MfgouKoPl6FA4Pg9bOwRrfklGj3w6a4BKR2rKd8JZqTV1TaFMpb2umWE4AH7x4aK E/D6HnmisnriwZOH8EfwU7f+DOUs46kKeBXqUa7VJoKbOeu/y8= X-ME-Sender: Message-Id: <1488635259.1730344.900251328.5D6F1325@webmail.messagingengine.com> From: Sebastian Gniazdowski To: zsh-workers@zsh.org MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_148863525917303440" X-Mailer: MessagingEngine.com Webmail Interface - ajax-1f3b8e78 Date: Sat, 04 Mar 2017 05:47:39 -0800 Subject: Re: [PATCH] zrealloc on array+=( ) --_----------=_148863525917303440 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" Hello, I revisited the patch, tested with debug prints, added test cases that stress things out. No code changes. Thought to test how Bash (3.2) performs on appends: # fun() { local -a arr; i=5001; while (( -- i )); do arr+=( "The appended test string of medium length" ); done; } # time fun real 0m0.221s user 0m0.214s sys 0m0.004s So it's 200 ms. The same test with no-zrealloc-Zsh is 2.94 s. With the patch it's 116 ms (using time tool, typeset -F SECONDS reveals it's 4 ms). So this can be a motivation to apply the patch. We can leverage the fact that operating system has size of the array and can extend it, and this way beat Bash. Of course, the real deal here is to be able to do data processing, e.g. log gathering, etc. -- Sebastian Gniazdowski psprint3@fastmail.com --_----------=_148863525917303440 Content-Disposition: attachment; filename="array_zrealloc2.diff" Content-Id: <1488635128.1729698.daab6a29b0dc76d62ce28e86f8600b8d426c16a4.11C9E5E2@content.messagingengine.com> Content-Transfer-Encoding: base64 Content-Type: text/plain; name="array_zrealloc2.diff" ZGlmZiAtLWdpdCBhL1NyYy9wYXJhbXMuYyBiL1NyYy9wYXJhbXMuYwppbmRl eCAxOWNiYjFjLi44OTQyZmVmIDEwMDY0NAotLS0gYS9TcmMvcGFyYW1zLmMK KysrIGIvU3JjL3BhcmFtcy5jCkBAIC0yNzIzLDI0ICsyNzIzLDU3IEBAIHNl dGFycnZhbHVlKFZhbHVlIHYsIGNoYXIgKip2YWwpCiAJCSpwKysgPSAqcisr OwogCSAgICB9CiAJfSBlbHNlIHsKLQkgICAgcCA9IG5ldyA9IChjaGFyICoq KSB6YWxsb2Moc2l6ZW9mKGNoYXIgKikKLQkJCQkgICAgICAgKiAocG9zdF9h c3NpZ25tZW50X2xlbmd0aCArIDEpKTsKLQotCSAgICBmb3IgKGkgPSAwOyBp IDwgdi0+c3RhcnQ7IGkrKykKLQkJKnArKyA9IGkgPCBwcmVfYXNzaWdubWVu dF9sZW5ndGggPyB6dHJkdXAoKnErKykgOiB6dHJkdXAoIiIpOwotCSAgICBm b3IgKHIgPSB2YWw7ICpyOykgewotCQkvKiBHaXZlIGF3YXkgb3duZXJzaGlw IG9mIHRoZSBzdHJpbmcgKi8KLQkJKnArKyA9ICpyKys7Ci0JICAgIH0KLQkg ICAgaWYgKHYtPmVuZCA8IHByZV9hc3NpZ25tZW50X2xlbmd0aCkKLQkJZm9y IChxID0gb2xkICsgdi0+ZW5kOyAqcTspCi0JCSAgICAqcCsrID0genRyZHVw KCpxKyspOwotCSAgICAqcCA9IE5VTEw7CisgICAgICAgICAgICAvKiBhcnIr PSggLi4uICkKKyAgICAgICAgICAgICAqIGFyclskeyNhcnJ9K3gsLi4uXT0o IC4uLiApICovCisgICAgICAgICAgICBpZiAocG9zdF9hc3NpZ25tZW50X2xl bmd0aCA+IHByZV9hc3NpZ25tZW50X2xlbmd0aCAmJgorICAgICAgICAgICAg ICAgICAgICBwcmVfYXNzaWdubWVudF9sZW5ndGggPD0gdi0+c3RhcnQgJiYK KyAgICAgICAgICAgICAgICAgICAgcHJlX2Fzc2lnbm1lbnRfbGVuZ3RoID4g MCAmJgorICAgICAgICAgICAgICAgICAgICB2LT5wbS0+Z3N1LmEtPnNldGZu ID09IGFycnNldGZuKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg IHAgPSBuZXcgPSAoY2hhciAqKikgenJlYWxsb2Mob2xkLCBzaXplb2YoY2hh ciAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICogKHBvc3RfYXNzaWdubWVudF9sZW5ndGggKyAxKSk7CisKKyAgICAg ICAgICAgICAgICBwICs9IHByZV9hc3NpZ25tZW50X2xlbmd0aDsgLyogYWZ0 ZXIgb2xkIGVsZW1lbnRzICovCisKKyAgICAgICAgICAgICAgICAvKiBDb25z aWRlciAxIDwgMCwgY2FzZSBmb3IgYT0oIDEgKTsgYVsxLC4uXSA9CisgICAg ICAgICAgICAgICAgICogICAgICAgICAgMSA8IDEsIGNhc2UgZm9yIGE9KCAx ICk7IGFbMiwuLl0gPSAqLworICAgICAgICAgICAgICAgIGlmIChwcmVfYXNz aWdubWVudF9sZW5ndGggPCB2LT5zdGFydCkgeworICAgICAgICAgICAgICAg ICAgICBmb3IgKGkgPSBwcmVfYXNzaWdubWVudF9sZW5ndGg7IGkgPCB2LT5z dGFydDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0g enRyZHVwKCIiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZvciAociA9IHZhbDsgKnI7 KSB7CisgICAgICAgICAgICAgICAgICAgIC8qIEdpdmUgYXdheSBvd25lcnNo aXAgb2YgdGhlIHN0cmluZyAqLworICAgICAgICAgICAgICAgICAgICAqcCsr ID0gKnIrKzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg ICAvKiB2LT5lbmQgZG9lc24ndCBtYXR0ZXI6CisgICAgICAgICAgICAgICAg ICogYT0oIDEgMiApOyBhWzQsMTAwXT0oIGEgYiApOyBlY2hvICIkeyhxQClh fSIKKyAgICAgICAgICAgICAgICAgKiAxIDIgJycgYSBiICovCisgICAgICAg ICAgICAgICAgKnAgPSBOVUxMOworCisgICAgICAgICAgICAgICAgdi0+cG0t PnUuYXJyID0gTlVMTDsKKyAgICAgICAgICAgICAgICB2LT5wbS0+Z3N1LmEt PnNldGZuKHYtPnBtLCBuZXcpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICAgICBwID0gbmV3ID0gKGNoYXIgKiopIHphbGxvYyhzaXpl b2YoY2hhciAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICogKHBvc3RfYXNzaWdubWVudF9sZW5ndGggKyAxKSk7Cisg ICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHYtPnN0YXJ0OyBpKysp CisgICAgICAgICAgICAgICAgICAgICpwKysgPSBpIDwgcHJlX2Fzc2lnbm1l bnRfbGVuZ3RoID8genRyZHVwKCpxKyspIDogenRyZHVwKCIiKTsKKyAgICAg ICAgICAgICAgICBmb3IgKHIgPSB2YWw7ICpyOykgeworICAgICAgICAgICAg ICAgICAgICAvKiBHaXZlIGF3YXkgb3duZXJzaGlwIG9mIHRoZSBzdHJpbmcg Ki8KKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICpyKys7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh2LT5lbmQgPCBwcmVf YXNzaWdubWVudF9sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIGZvciAo cSA9IG9sZCArIHYtPmVuZDsgKnE7KQorICAgICAgICAgICAgICAgICAgICAg ICAgKnArKyA9IHp0cmR1cCgqcSsrKTsKKyAgICAgICAgICAgICAgICAqcCA9 IE5VTEw7CisKKyAgICAgICAgICAgICAgICB2LT5wbS0+Z3N1LmEtPnNldGZu KHYtPnBtLCBuZXcpOworICAgICAgICAgICAgfQogCiAJICAgIERQVVRTMihw IC0gbmV3ICE9IHBvc3RfYXNzaWdubWVudF9sZW5ndGgsICJzZXRhcnJ2YWx1 ZTogd3JvbmcgYWxsb2NhdGlvbjogJWQgMT0gJWx1IiwKIAkJICAgcG9zdF9h c3NpZ25tZW50X2xlbmd0aCwgKHVuc2lnbmVkIGxvbmcpKHAgLSBuZXcpKTsK LQotCSAgICB2LT5wbS0+Z3N1LmEtPnNldGZuKHYtPnBtLCBuZXcpOwogCX0K IAogICAgICAgICAvKiBPd25lcnNoaXAgb2YgYWxsIHN0cmluZ3MgaGFzIGJl ZW4KZGlmZiAtLWdpdCBhL1Rlc3QvQTA2YXNzaWduLnp0c3QgYi9UZXN0L0Ew NmFzc2lnbi56dHN0CmluZGV4IGJmMzlhZWUuLmZkMmI0MTcgMTAwNjQ0Ci0t LSBhL1Rlc3QvQTA2YXNzaWduLnp0c3QKKysrIGIvVGVzdC9BMDZhc3NpZ24u enRzdApAQCAtMTMzLDYgKzEzMyw3MiBAQAogPjEgMiA0MiA0MyA0NCA1CiA+ MSAyIDQyIDEwMCA5OSA1CiAKKyMgKHN1YnNlY3Rpb246IGFwcGVuZCB0byBh cnJheSkKKworIGFycmF5PSggKQorIGFycmF5WzUsNl09KCAxIDIgMyApCisg cHJpbnQgJGFycmF5CisgcHJpbnQgIiR7KHFAKWFycmF5fSIKKzA6QXBwZW5k IHRvIGVtcHR5IGFycmF5IGJ5IHJhbmdlCis+MSAyIDMKKz4nJyAnJyAnJyAn JyAxIDIgMworCisgYXJyYXk9KCBhICkKKyBhcnJheVs1LDZdPSggMSAyIDMg KQorIHByaW50ICRhcnJheQorIHByaW50ICIkeyhxQClhcnJheX0iCiswOkFw cGVuZCB0byAxLWVsZW1lbnQgYXJyYXkgYnkgcmFuZ2UKKz5hIDEgMiAzCis+ YSAnJyAnJyAnJyAxIDIgMworCisgYXJyYXk9KCBhIGIgKQorIGFycmF5WzUs Nl09KCAxIDIgMyApCisgcHJpbnQgJGFycmF5CisgcHJpbnQgIiR7KHFAKWFy cmF5fSIKKzA6QXBwZW5kIHRvIDItZWxlbWVudCBhcnJheSBieSByYW5nZQor PmEgYiAxIDIgMworPmEgYiAnJyAnJyAxIDIgMworCisgYXJyYXk9KCBhIGIg KQorIGFycmF5WzUsNV09KCAxIDIgMyApCisgcHJpbnQgJGFycmF5CisgcHJp bnQgIiR7KHFAKWFycmF5fSIKKzA6QXBwZW5kIHRvIDItZWxlbWVudCBhcnJh eSBieSBbYSxhXSByYW5nZQorPmEgYiAxIDIgMworPmEgYiAnJyAnJyAxIDIg MworCisgYXJyYXk9KCBhIGIgYyBkICkKKyBhcnJheVs1LDZdPSggMSAyIDMg KQorIHByaW50ICRhcnJheQorIHByaW50ICIkeyhxQClhcnJheX0iCiswOkFw cGVuZCBhcnJheSBieSByYW5nZSwgY29udGludW91c2x5Cis+YSBiIGMgZCAx IDIgMworPmEgYiBjIGQgMSAyIDMKKworIGFycmF5PSggYSBiIGMgZCApCisg YXJyYXlbNSw1XT0oIDEgMiAzICkKKyBwcmludCAkYXJyYXkKKyBwcmludCAi JHsocUApYXJyYXl9IgorMDpBcHBlbmQgYXJyYXkgYnkgW2EsYV0gcmFuZ2Us IGNvbnRpbnVvdXNseQorPmEgYiBjIGQgMSAyIDMKKz5hIGIgYyBkIDEgMiAz CisKKyBhcnJheT0oICkKKyBhcnJheSs9KCAxIDIgMyApCisgcHJpbnQgJGFy cmF5CisgcHJpbnQgIiR7KHFAKWFycmF5fSIKKzA6QXBwZW5kIGVtcHR5IGFy cmF5IHZpYSArPQorPjEgMiAzCis+MSAyIDMKKworIGFycmF5PSggYSApCisg YXJyYXkrPSggMSAyIDMgKQorIHByaW50ICRhcnJheQorIHByaW50ICIkeyhx QClhcnJheX0iCiswOkFwcGVuZCAxLWVsZW1lbnQgYXJyYXkgdmlhICs9Cis+ YSAxIDIgMworPmEgMSAyIDMKKwogIyB0ZXN0cyBvZiB2YXIrPXNjYWxhcgog CiAgcys9Zm9vCg== --_----------=_148863525917303440--