On 4/22/16 9:07 AM, rindeal wrote:
>>From edc6df44de4e0f22322062c7c7e1b973bd89f4cd Mon Sep 17 00:00:00 2001
> From: Jan Chren <dev.rind...@gmail.com>
> Date: Fri, 22 Apr 2016 14:21:08 +0200
> Subject: [PATCH] isolated-functions.sh: eliminate loop in has()
> 
> Looping is slow and clutters debug log.
> Still this wouldn't matter that much if has() wasn't one of the most used
> functions.

do you have any benchmarks?  what you say makes sense but i'm not sure
of the implementation details of "$A" == "*${B}*" so its hard to say.

> 
> Thus this patch should bring a general improvement.
> ---
>  bin/isolated-functions.sh | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)
> 
> diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh
> index e320f71..6900f99 100644
> --- a/bin/isolated-functions.sh
> +++ b/bin/isolated-functions.sh
> @@ -463,14 +463,12 @@ hasv() {
>  }
> 
>  has() {
> -       local needle=$1
> +       local needle=$'\a'"$1"$'\a'

why the ascii bell?  just because you'd never expect it in a parameter
to has?

>         shift
> +       local IFS=$'\a'
> +       local haystack=$'\a'"$@"$'\a'

you want "$*" here not "$@"

> 
> -       local x
> -       for x in "$@"; do
> -               [ "${x}" = "${needle}" ] && return 0
> -       done
> -       return 1
> +       [[ "${haystack}" == *"${needle}"* ]]
>  }
> 
>  __repo_attr() {
> --
> 2.7.3
> 


-- 
Anthony G. Basile, Ph. D.
Chair of Information Technology
D'Youville College
Buffalo, NY 14201
(716) 829-8197

Reply via email to