Sponsored Content
Top Forums Shell Programming and Scripting Bash - array loop performance Post 302919551 by Scrutinizer on Thursday 2nd of October 2014 02:35:38 AM
Old 10-02-2014
Quote:
Originally Posted by Chubler_XL
Bash isn't very efficient looking up large arrays I found using bash 4 assoicative arrays gave me a significant boost in speed if you have bash 4 consider using them:

Code:
declare -A sn
n=80000
k4=2
k3=6
for((i=0;i<n;i++))
do  sn[i]=$((RANDOM%256))
done

for(( i=0; i<n-2; i++ ))
do sn[i]=$(( (sn[i] ^ sn[i+1] ^ sn[i+2] * k4) % 256 ))
done

for(( i=(n-1); i>1; i--))
do sn[i]=$(( (sn[i] ^ sn[i-2] ^ sn[i-1] * k3) % 256))
done

Interesting.... I did some further testing with bash 3, bash 4 and ksh93 (for the associative array I used the synonym typeset -A instead of declare -A which works both in bash4 and ksh93:


Code:
indexed arrays                  bash 3          bash 4          ksh93
                        real    2m4.457s        1m6.420s        0m1.855s
                        user    1m53.857s       0m57.251s       0m1.764s
                        sys     0m0.501s        0m0.399s        0m0.007s

Associative arrays              bash 3          bash 4          ksh93   
                        real    -               0m4.553s        0m1.871s
                        user    -               0m3.867s        0m1.567s
                        sys     -               0m0.171s        0m0.003s

There seems to be an issue with regular arrays in bash that is absent in ksh93 which processes both types of arrays at the same speed...


---
Testing on OSX 10.9.5, bash 3.2.51(1), bash 4.2.0(1), ksh 93u 2011-02-08

Last edited by Scrutinizer; 10-02-2014 at 03:58 AM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Using variables created sequentially in a loop while still inside of the loop [bash]

I'm trying to understand if it's possible to create a set of variables that are numbered based on another variable (using eval) in a loop, and then call on it before the loop ends. As an example I've written a script called question (The fist command is to show what is the contents of the... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

2. Shell Programming and Scripting

problem access array outside of loop in bash

Below is a test script I was trying to use so that I could understand why the logic was not working in a larger script. While accessing and printing array data inside the while loop, everything is fine. Outside the loop, i guess everything is null?? The for loop that is meant to cycle... (4 Replies)
Discussion started by: adlmostwanted
4 Replies

3. Shell Programming and Scripting

Array Variable being Assigned Values in Loop, But Gone when Loop Completes???

Hello All, Maybe I'm Missing something here but I have NOOO idea what the heck is going on with this....? I have a Variable that contains a PATTERN of what I'm considering "Illegal Characters". So what I'm doing is looping through a string containing some of these "Illegal Characters". Now... (5 Replies)
Discussion started by: mrm5102
5 Replies

4. Shell Programming and Scripting

Bash 3.2 - Array / Regex - IF 3rd member in array ends in 5 digits then do somthing...

Trying to do some control flow parsing based on the index postion of an array member. Here is the pseudo code I am trying to write in (preferably in pure bash) where possible. I am thinking regex with do the trick, but need a little help. pesudo code if == ENDSINFIVEINTS ]]; then do... (4 Replies)
Discussion started by: briandanielz
4 Replies

5. Shell Programming and Scripting

awk loop using array:wish to store array values from loop for use outside loop

Here's my code: awk -F '' 'NR==FNR { if (/time/ && $5>10) A=$2" "$3":"$4":"($5-01) else if (/time/ && $5<01) A=$2" "$3":"$4-01":"(59-$5) else if (/time/ && $5<=10) A=$2" "$3":"$4":0"($5-01) else if (/close/) { B=0 n1=n2; ... (2 Replies)
Discussion started by: klane
2 Replies

6. UNIX for Advanced & Expert Users

How to test RAID10 array performance [Debian Wheezy]?

I have created a RAID10 array (near layout) with four 8 GiB virtual hard drives, making a 16 GiB array (/dev/md0 formatted as ext4). On the other hand, I have a 16 GiB RAID1 array (/dev/md1, also formatted as ext4). The purpose of these setups is to compare the read and write performances of each... (13 Replies)
Discussion started by: gacanepa
13 Replies

7. Shell Programming and Scripting

Bash arrays: rebin/interpolate smaller array to large array

hello, i need a bit of help on how to do this effectively in bash without a lot of extra looping or massive switch/case i have a long array of M elements and a short array of N elements, so M > N always. M is not a multiple of N. for case 1, I want to stretch N to fit M arrayHuge H = (... (2 Replies)
Discussion started by: f77hack
2 Replies

8. UNIX for Beginners Questions & Answers

Bash array variables are changed in loop runtime

I am trying to check whether particular host and port are responding or not. I am using below script to check. but node_port array that i am using in loop is getting replaced with previous iteration value. Script and output is given. Please help me to understanding why node_port values are... (5 Replies)
Discussion started by: tmalik79
5 Replies

9. Shell Programming and Scripting

Bash Array connectin to another Array

Hello, i have a script that i need account_number to match a name. for exsample : ACCOUNT_ID=(IatHG8DC7mZbdymSoOr11w KbnlG2j-KRQ0-1_Xk356s8) and i run a loop curl requst with this the issue is that i want to know on which account were talking about so bash will know this : ... (4 Replies)
Discussion started by: batchenr
4 Replies

10. Shell Programming and Scripting

Bash for loop array

Hi there, A bit new to bash and am having an issue with a for loop. I look for filenames in a specified directory and pull the date string from each meeting a certain criteria, and then would like to make a directory for each date found, like this: search 20180101.gz 20180102.gz 20180103.gz... (5 Replies)
Discussion started by: mwheeler12
5 Replies
SoPrimitiveVertexCache(3)					       Coin						 SoPrimitiveVertexCache(3)

NAME
SoPrimitiveVertexCache - SYNOPSIS
Inherits SoCache. Public Types enum Arrays { NORMAL = 0x01, TEXCOORD = 0x02, COLOR = 0x04, ALL = (NORMAL|TEXCOORD|COLOR) } Public Member Functions SoPrimitiveVertexCache (SoState *state) virtual ~SoPrimitiveVertexCache () void renderTriangles (SoState *state, const int arrays=ALL) const void renderLines (SoState *state, const int arrays=ALL) const void renderPoints (SoState *state, const int array=ALL) const void addTriangle (const SoPrimitiveVertex *v0, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2, const int *pointdetailidx=NULL) void addLine (const SoPrimitiveVertex *v0, const SoPrimitiveVertex *v1) void addPoint (const SoPrimitiveVertex *v) int getNumVertices (void) const const SbVec3f * getVertexArray (void) const const SbVec3f * getNormalArray (void) const const SbVec4f * getTexCoordArray (void) const const SbVec2f * getBumpCoordArray (void) const const uint8_t * getColorArray (void) const int getNumTriangleIndices (void) const const GLint * getTriangleIndices (void) const int32_t getTriangleIndex (const int idx) const SbBool colorPerVertex (void) const const SbVec4f * getMultiTextureCoordinateArray (const int unit) const int getNumLineIndices (void) const const GLint * getLineIndices (void) const int getNumPointIndices (void) const const GLint * getPointIndices (void) const void fit (void) void depthSortTriangles (SoState *state) Additional Inherited Members Detailed Description The SoPrimitiveVertexClass is used to cache generated triangles. Constructor &; Destructor Documentation SoPrimitiveVertexCache::SoPrimitiveVertexCache (SoState *state) Constructor. SoPrimitiveVertexCache::~SoPrimitiveVertexCache () [virtual] Destructor. Author Generated automatically by Doxygen for Coin from the source code. Version 3.1.3 Wed May 23 2012 SoPrimitiveVertexCache(3)
All times are GMT -4. The time now is 08:11 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy