File: array-access.sh

package info (click to toggle)
ble.sh 0.4.0~git20250321.d4c812b-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 12,516 kB
  • sloc: sh: 71,367; awk: 1,316; cpp: 750; ansic: 186; javascript: 43; makefile: 35
file content (76 lines) | stat: -rwxr-xr-x 3,046 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/env bash

if [[ ! ${BLE_VERSION-} ]]; then
  source ../../src/benchmark.sh
fi

function measure-array.1 {
  local N=$1
  eval "local -a a=({1..$N})"
  ble-measure "$2"
}
function measure-array {
  measure-array.1 10     "$1 10    "
  measure-array.1 100    "$1 100   "
  measure-array.1 1000   "$1 1000  "
  measure-array.1 10000  "$1 10000 "
  measure-array.1 100000 "$1 100000"
}
function sum-forward  { local s=0; for ((i=0;i<N;i++)); do ((s+=a[i])); done       ; }
function sum-backward { local s=0; for ((i=N;--i>=0;)); do ((s+=a[i])); done       ; }
function sum-random   { local s=0; for ((i=0;i<N;i++)); do ((s+=a[RANDOM%N])); done; }

measure-array sum-forward 
measure-array sum-backward
measure-array sum-random  

# bash-dev
#      38.371 usec/eval: sum-forward 10     (x5000)
#     311.913 usec/eval: sum-forward 100    (x500)
#    3046.322 usec/eval: sum-forward 1000   (x50)
#   30699.500 usec/eval: sum-forward 10000  (x5)
#  309013.300 usec/eval: sum-forward 100000 (x1)
#      33.804 usec/eval: sum-backward 10     (x5000)
#     269.811 usec/eval: sum-backward 100    (x500)
#    2645.302 usec/eval: sum-backward 1000   (x50)
#   26564.500 usec/eval: sum-backward 10000  (x5)
#  266084.300 usec/eval: sum-backward 100000 (x1)
#      45.826 usec/eval: sum-random 10     (x5000)
#     399.209 usec/eval: sum-random 100    (x500)
#    4580.182 usec/eval: sum-random 1000   (x50)
#  135904.300 usec/eval: sum-random 10000  (x1)
# 3693072.300 usec/eval: sum-random 100000 (x1)

# bash-5.0
#      38.723 usec/eval: sum-forward 10     (x5000)
#     322.861 usec/eval: sum-forward 100    (x500)
#    3188.720 usec/eval: sum-forward 1000   (x50)
#   31446.200 usec/eval: sum-forward 10000  (x5)
#  317422.600 usec/eval: sum-forward 100000 (x1)
#      34.875 usec/eval: sum-backward 10     (x5000)
#     286.639 usec/eval: sum-backward 100    (x500)
#    2826.220 usec/eval: sum-backward 1000   (x50)
#   27921.600 usec/eval: sum-backward 10000  (x5)
#  283819.600 usec/eval: sum-backward 100000 (x1)
#      46.838 usec/eval: sum-random 10     (x2000)
#     414.663 usec/eval: sum-random 100    (x500)
#    5517.050 usec/eval: sum-random 1000   (x20)
#  123421.600 usec/eval: sum-random 10000  (x1)
# 4942400.600 usec/eval: sum-random 100000 (x1)

# bash-4.4
#       41.660 usec/eval: sum-forward 10     (x5000)
#      354.000 usec/eval: sum-forward 100    (x500)
#     3416.000 usec/eval: sum-forward 1000   (x50)
#    34200.000 usec/eval: sum-forward 10000  (x5)
#   347000.000 usec/eval: sum-forward 100000 (x1)
#       37.060 usec/eval: sum-backward 10     (x5000)
#      316.000 usec/eval: sum-backward 100    (x500)
#     5095.000 usec/eval: sum-backward 1000   (x20)
#   242000.000 usec/eval: sum-backward 10000  (x1)
# 19999000.000 usec/eval: sum-backward 100000 (x1)
#       51.050 usec/eval: sum-random 10     (x2000)
#      454.000 usec/eval: sum-random 100    (x500)
#     5895.000 usec/eval: sum-random 1000   (x20)
#   172000.000 usec/eval: sum-random 10000  (x1)
#  4577000.000 usec/eval: sum-random 100000 (x1)