Sponsored Content
Top Forums Shell Programming and Scripting speeding up bash script with "while read line" Post 302526484 by gary_w on Tuesday 31st of May 2011 04:00:21 PM
Old 05-31-2011
For the sake of argument...

You could change:
Code:
mCurr=${mCurr}+1

to:
Code:
((mCurr+=1))

to have the korn shell perform integer math inline and speed things up even more. It's actually quite surprising the difference it makes. consider this example:
Code:
#!/bin/ksh

integer limit=100000
integer ctr=0

function method1 {
ctr=0
print "\nfunction 1 starting $ctr"
while ((ctr < $limit))
do
   ctr=${ctr}+1
done
print "function 1 ending $ctr"
}

function method2 {
ctr=0
print "\nfunction 2 starting $ctr"
while ((ctr < $limit))
do
  ((ctr+=1))
done
print "function 2 ending $ctr"
}

time method1

time method2

exit 0

Output:
Code:
 $ ./aa

function 1 starting 0
function 1 ending 100000

real    0m3.46s
user    0m3.45s
sys     0m0.00s

function 2 starting 0
function 2 ending 100000

real    0m2.16s
user    0m2.16s
sys     0m0.00s
  $

While not a huge difference for this simple example, it could make an impact if multiple calculations are being done on millions of records.
This User Gave Thanks to gary_w For This Post:
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies

2. Shell Programming and Scripting

script to read a line with spaces bet " " and write to a file

Hi, I need a command in UNIX KSH below is the description... MAPPING DESCRIPTION ="Test Mapping for the calid inputs" ISVALID ="YES" NAME ="m_test_xml" OBJECTVERSION ="1" VERSIONNUMBER ="1" unix ksh command to read the DESCRIPTION and write to a file Test Mapping for the calid inputs... (3 Replies)
Discussion started by: perlamohan
3 Replies

3. Shell Programming and Scripting

read -p "prompt text" foo say "read: bad option(s)" in Bourne-Shell

Hallo, i need a Prompting read in my script: read -p "Enter your command: " command But i always get this Error: -p: is not an identifier When I run these in c-shell i get this error /usr/bin/read: read: bad option(s) How can I use a Prompt in the read command? (9 Replies)
Discussion started by: wiseguy
9 Replies

4. Shell Programming and Scripting

read -n1 -r -p "Press..." key / produces error in bash shell script

Hello! Sorry, for my not so perfect english! I want to stop bash shell script execution until any key is pressed. This line in a bash shell script read -n1 -r -p "Press any key to continue..." key produces this error When I run this from the command line usera@lynx:~$ read... (4 Replies)
Discussion started by: linuxinho
4 Replies

5. Shell Programming and Scripting

Simplify Bash Script Using "sed" Or "awk"

Input file: 2 aux003.net3.com error12 6 awn0117.net1.com error13 84 aux008 error14 29 aux001.ha.ux.isd.com error12 209 aux002.vm.ux.isd.com error34 21 alx0027.vm.net2.com error12 227 dux001.net5.com error123 22 us008.dot.net2.com error121 13 us009.net2.com error129Expected Output: 2... (4 Replies)
Discussion started by: sQew
4 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. UNIX for Dummies Questions & Answers

"Help with bash script" - "License Server and Patch Updates"

Hi All, I'm completely new to bash scripting and still learning my way through albeit vey slowly. I need to know where to insert my server names', my ip address numbers through out the script alas to no avail. I'm also searching on how to save .sh (bash shell) script properly.... (25 Replies)
Discussion started by: profileuser
25 Replies

8. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

9. Shell Programming and Scripting

Failure: if grep "$Var" "$line" inside while read line loop

Hi everybody, I am new at Unix/Bourne shell scripting and with my youngest experiences, I will not become very old with it :o My code: #!/bin/sh set -e set -u export IFS= optl="Optl" LOCSTORCLI="/opt/lsi/storcli/storcli" ($LOCSTORCLI /c0 /vall show | grep RAID | cut -d " "... (5 Replies)
Discussion started by: Subsonic66
5 Replies

10. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies
PMC_CONTROL(2)						      BSD System Calls Manual						    PMC_CONTROL(2)

NAME
pmc_control, pmc_get_info -- Hardware Performance Monitoring Interface LIBRARY
Standard C Library (libc, -lc) SYNOPSIS
#include <sys/pmc.h> int pmc_control(int ctr, int op, void *argp); int pmc_get_info(int ctr, int op, void *argp); DESCRIPTION
pmc_get_info() returns the number of counters in the system or information on a specified counter ctr. The possible values for op are: PMC_INFO_NCOUNTERS When querying the number of counters in the system, ctr is ignored and argp is of type int *. Upon return, the integer pointed to by argp will contain the number of counters that are available in the system. PMC_INFO_CPUCTR_TYPE When querying the type of a counter in the system, ctr refers to the counter being queried, and argp is of type int *. Upon return, the integer pointed to by argp will contain the implementation-dependent type of the specified counter. If ctr is -1, the integer pointed to by argp will contain the machine-dependent type describing the CPU or counter configuration. PMC_INFO_COUNTER_VALUE When querying the value of a counter in the system, ctr refers to the counter being queried, and argp is of type uint64_t *. Upon return, the 64-bit integer pointed to by argp will contain the value of the specified counter. PMC_INFO_ACCUMULATED_COUNTER_VALUE When querying the value of a counter in the system, ctr refers to the counter being queried, and argp is of type uint64_t *. Upon return, the 64-bit integer pointed to by argp will contain the sum of the accumulated values of specified counter in all exited sub- processes of the current process. pmc_control() manipulates the specified counter ctr in one of several fashions. The op parameter determines the action taken by the kernel and also the interpretation of the argp parameter. The possible values for op are: PMC_OP_START Starts the specified ctr running. It must be preceded by a call with PMC_OP_CONFIGURE. argp is ignored in this case and may be NULL. PMC_OP_STOP Stops the specified ctr from running. argp is ignored in this case and may be NULL. PMC_OP_CONFIGURE Configures the specified ctr prior to running. argp is a pointer to a struct pmc_counter_cfg. struct pmc_counter_cfg { pmc_evid_t event_id; pmc_ctr_t reset_value; uint32_t flags; }; event_id is the event ID to be counted. reset_value is a value to which the counter should be reset on overflow (if supported by the implementation). This is most useful when profiling (see PMC_OP_PROFSTART, below). This value is defined to be the number of counter ticks before the next overflow. So, to get a profiling tick on every hundredth data cache miss, set the event_id to the proper value for ``dcache-miss'' and set reset_value to 100. flags Currently unused. PMC_OP_PROFSTART Configures the specified ctr for use in profiling. argp is a pointer to a struct pmc_counter_cfg as in PMC_OP_CONFIGURE, above. This request allocates a kernel counter, which will fail if any process is using the requested counter. Not all implementations or coun- ters may support this option. PMC_OP_PROFSTOP Stops the specified ctr from being used for profiling. argp is ignored in this case and may be NULL. RETURN VALUES
A return value of 0 indicates that the call succeeded. Otherwise, -1 is returned and the global variable errno is set to indicate the error. ERRORS
Among the possible error codes from pmc_control() and pmc_get_info() are [EFAULT] The address specified for the argp is invalid. [ENXIO] Specified counter is not yet configured. [EINPROGRESS] PMC_OP_START was passed for a counter that is already running. [EINVAL] Specified counter was invalid. [EBUSY] If the requested counter is already in use--either by the current process or by the kernel. [ENODEV] If and only if the specified counter event is not valid for the specified counter when configuring a counter or starting profiling. [ENOMEM] If the kernel is unable to allocate memory. SEE ALSO
pmc(1), pmc(9) HISTORY
The pmc_control() and pmc_get_info() system calls appeared in NetBSD 2.0. BSD
October 27, 2005 BSD
All times are GMT -4. The time now is 06:07 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy