From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 10257 invoked from network); 22 Sep 2021 17:01:35 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 22 Sep 2021 17:01:35 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1632330095; b=hbiqZ/UEa4BbGfzV1SIRdUHkbz+GpppMy5KxRwKuXjubfoKKyojsu/4atZpCfu8b0QvBkhYpnU wRySI+Z1iYIcsv1IJI8+zpeqILpX/2aDf3EEQAA8jljLhZHTO3bYQtzabdGYzB7KL8GphKwK0R oJtVlwZJBt039TTGK0gffby5lN64E3RBavWzKz7xTnaDOR4V6VfAd8OoYM89buafCj2csrS19Y 7Iv2DYJzQ2zHPGRQ1CMR26iMWMsOn+mxmZppSHqFHaDK+ELN/NC0gnzPsEhGpsWZKihPGw+waG dveSEInF+bX2oISahN9WERgSXPcZqsoxSy7OVUsgZWXPLA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-qk1-f180.google.com) smtp.remote-ip=209.85.222.180; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1632330095; bh=Wgj82PyzOzLnMJVmnO/dPLcqA3n6WSrljmx4twugLGc=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=TeelyEqJPJSDUSALLvGfN2hH+zLmPpNduH08cyey/ZTYc4A9RdyMcZtO3wmCh/xhjflNfjQDlJ yA62Hsay/Kdd92IGmDmkznyRtNwfcd9snzv7uZkiKLkOk+ThEQlhVro+V6X67VMUyT/g8QhTR8 Oln9bZzPGb9vOvXO7Nx1NWjmgP48RmMOfs2g2l11aFIyXbnItT4NfMw0ZyiJjIun4jy83zKuQb sVdDbuX78tEW0lzSaZ7z8HyuhUEgtR6dkOm0IfAIBzS19XzfaLualGm1C7l0FVQhcF4nBDH71/ bkpsZQgk8H5MLo3AvwlFbJZZ1h1/l40uTgsKS5a3yRlDwg==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID :Date:From:In-Reply-To:References:MIME-Version:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=iQsMITalhqfaMUJOD2c6dz8TzKESK/J9kh7A2SMwPLc=; b=iCyugALj9Ji3B2R0JuPc57ana6 bqxqRlGBZe4OomSlEVYywZpiaF77KOFc5GFiUOxeE20HzdNIR1GYDZb2yyGjGcptDmZFaUC/Wn9mG 8xh9dzQYaHrR9F9JJu0Du64bX6JZ9iFu/MMIoSc8QLK1itbz7X4hd3xar/rasDF8VHZphJao9SLg5 hiILUd5VtZOkNe+H4YPw/GXYkvbnrNvEtTpP94MjMNx2N30Pgw1jFETAQrZYLnwJuFLqcanOt71Gm 5Ptv9KpzfmR87m8buBQ5EG7CisZXyVkXmX6TpH1CzRcbmc+lFvLQ25GnJ7jHsHVOkS76r1Ryy/u6Y 09YsvTRA==; Received: from authenticated user by zero.zsh.org with local id 1mT5ck-000A9y-89; Wed, 22 Sep 2021 17:01:34 +0000 Authentication-Results: zsh.org; iprev=pass (mail-qk1-f180.google.com) smtp.remote-ip=209.85.222.180; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-qk1-f180.google.com ([209.85.222.180]:46759) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1mT5cB-0009rv-Rc; Wed, 22 Sep 2021 17:01:00 +0000 Received: by mail-qk1-f180.google.com with SMTP id b65so11643181qkc.13 for ; Wed, 22 Sep 2021 10:00:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=iQsMITalhqfaMUJOD2c6dz8TzKESK/J9kh7A2SMwPLc=; b=QO6BtJwIfz1LDOzEGwN6Dsk042fqXqlNLQcH5IdD32zq5DwI2gu3F2xhQSBVIeew55 Ph6PCsSQX/CktpKSVzL3IdYuALM287diFdfIxPJLl5iiugLp3YcdLmPrjKZRbWZJMgLS NjHEamUr6QIKqUTYKmtfl/S5/bcRzW73GZUxU4YAtCBB1xM8ErYWD00Rgvc7/V9NCYvS u1JVQPvbeEp5eVw5VYcgG9P0GxmZd3PpdJNlvcGjfhR01fxHFFLJMMnmm+UmQqxy216E Rl0rYni3iyIne/SQnAngb1cREQpFrCggdq/Zciz+qhxZ5Qwvhqt5YioQ3kcDWboxur4r g8TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=iQsMITalhqfaMUJOD2c6dz8TzKESK/J9kh7A2SMwPLc=; b=O9OSCUriuhvT/QrqKoHZSdGSdKP+3pO/ETet5l+RbmnnKJiXC1e8ySIfCgZTkNzUBP waEc79C9NRtPdHuR2alD2+ZjzZiFUxL9gR+fbJssQy3XzQx1whuJRXBnZUslk3hc7LBp HRrPgWG3FIizKPpLbWM1rdOOQFz/Xg+FVW2feJBmn4HZwynY1YhRxHwMGFa8pj7H526U ydDBBFIyl0t+q84KuDaIg759lgQJE6rtvoVtQCqkkp55/WZ7+Q4HBuywI9QeA5l64Muc 6fwSQgvRnLvhUmMNuESA3CgzBjV6ukN5aoRCordGFi42KRmFr+U0yeZ0PRAP8Nfpv22F vXuw== X-Gm-Message-State: AOAM532HOzHursMBAapzABfmZGOG5VwD9RdltY9Ak6+Klpvc0hDFtuN9 sTXbhmxu/5cPS/d7XVZU0OFHvEM9E/xTPU/mrl2wmn3w83TmTw== X-Google-Smtp-Source: ABdhPJz1v12TQlyR56MMAG1xgBKmqgwaCgLiJyGZjWG4DQ7cCH6FOOIy30/sadWYDwKqmc8tMjBIgW2FE2PPiqj4Egs= X-Received: by 2002:a25:bb93:: with SMTP id y19mr225981ybg.266.1632330058527; Wed, 22 Sep 2021 10:00:58 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bart Schaefer Date: Wed, 22 Sep 2021 10:00:47 -0700 Message-ID: Subject: Re: slow ssh host tab completion when many hosts To: Peter Palfrader Cc: Zsh hackers list Content-Type: text/plain; charset="UTF-8" X-Seq: 49434 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: On Wed, Sep 22, 2021 at 1:31 AM Peter Palfrader wrote: > > I suspect, that one of the issues is in _ssh_hosts where it always pops > the first element of an array. At a guess this causes quadratic > runtime behaviour. "shift" would imply a copy of the tail of the array, yes. > The following patch improves the behaviour significantly (to about > 2secs): This looks OK, but it can be improved a bit further. Firstly, anywhere you are writing lines[$idx] you can just use lines[idx] because everything inside the square brackets of an array dereference is treated as a math expression. Secondly: > @@ -43,7 +44,7 @@ if [[ -r $config ]]; then > (*) config_hosts+=("$host") ;; > esac > done ;& > - (*) shift lines;; > + (*) idx=$((idx + 1));; > esac > done > if (( ${#config_hosts} )); then Instead of the assignment idx=$((idx + 1)) you can use the statement ((idx++))