/eclass/tests/eapi7-ver_benchmark.sh

https://gitlab.com/argent/portage · Shell · 147 lines · 124 code · 16 blank · 7 comment · 9 complexity · 91b11461ffebc12e1278123f7e19354a MD5 · raw file

  1. #!/bin/bash
  2. # Copyright 1999-2017 Gentoo Foundation
  3. # Distributed under the terms of the GNU General Public License v2
  4. EAPI=6
  5. source tests-common.sh
  6. inherit eapi7-ver versionator
  7. cutting() {
  8. local x
  9. for x in {1..1000}; do
  10. ver_cut 1 1.2.3
  11. ver_cut 1-2 1.2.3
  12. ver_cut 2- 1.2.3
  13. ver_cut 1- 1.2.3
  14. ver_cut 3-4 1.2.3b_alpha4
  15. ver_cut 5 1.2.3b_alpha4
  16. ver_cut 1-2 .1.2.3
  17. ver_cut 0-2 .1.2.3
  18. ver_cut 2-3 1.2.3.
  19. ver_cut 2- 1.2.3.
  20. ver_cut 2-4 1.2.3.
  21. done >/dev/null
  22. }
  23. cutting_versionator() {
  24. local x
  25. for x in {1..100}; do
  26. get_version_component_range 1 1.2.3
  27. get_version_component_range 1-2 1.2.3
  28. get_version_component_range 2- 1.2.3
  29. get_version_component_range 1- 1.2.3
  30. get_version_component_range 3-4 1.2.3b_alpha4
  31. get_version_component_range 5 1.2.3b_alpha4
  32. get_version_component_range 1-2 .1.2.3
  33. get_version_component_range 0-2 .1.2.3
  34. get_version_component_range 2-3 1.2.3.
  35. get_version_component_range 2- 1.2.3.
  36. get_version_component_range 2-4 1.2.3.
  37. done >/dev/null
  38. }
  39. replacing() {
  40. local x
  41. for x in {1..1000}; do
  42. ver_rs 1 - 1.2.3
  43. ver_rs 2 - 1.2.3
  44. ver_rs 1-2 - 1.2.3.4
  45. ver_rs 2- - 1.2.3.4
  46. ver_rs 2 . 1.2-3
  47. ver_rs 3 . 1.2.3a
  48. ver_rs 2-3 - 1.2_alpha4
  49. #ver_rs 3 - 2 "" 1.2.3b_alpha4
  50. #ver_rs 3-5 _ 4-6 - a1b2c3d4e5
  51. ver_rs 1 - .1.2.3
  52. ver_rs 0 - .1.2.3
  53. done >/dev/null
  54. }
  55. replacing_versionator() {
  56. local x
  57. for x in {1..100}; do
  58. replace_version_separator 1 - 1.2.3
  59. replace_version_separator 2 - 1.2.3
  60. replace_version_separator 1-2 - 1.2.3.4
  61. replace_version_separator 2- - 1.2.3.4
  62. replace_version_separator 2 . 1.2-3
  63. replace_version_separator 3 . 1.2.3a
  64. replace_version_separator 2-3 - 1.2_alpha4
  65. #replace_version_separator 3 - 2 "" 1.2.3b_alpha4
  66. #replace_version_separator 3-5 _ 4-6 - a1b2c3d4e5
  67. replace_version_separator 1 - .1.2.3
  68. replace_version_separator 0 - .1.2.3
  69. done >/dev/null
  70. }
  71. comparing() {
  72. local x
  73. for x in {1..1000}; do
  74. ver_test 1b_p1 -le 1_p1
  75. ver_test 1.1b -le 1.1
  76. ver_test 12.2.5 -le 12.2b
  77. ver_test 4.0 -le 5.0
  78. ver_test 5 -le 5.0
  79. ver_test 1.0_pre2 -le 1.0_p2
  80. ver_test 1.0_alpha2 -le 1.0_p2
  81. ver_test 1.0_alpha1 -le 1.0_beta1
  82. ver_test 1.0_beta3 -le 1.0_rc3
  83. ver_test 1.001000000000000001 -le 1.001000000000000002
  84. done
  85. }
  86. comparing_versionator() {
  87. local x
  88. for x in {1..100}; do
  89. version_is_at_least 1b_p1 1_p1
  90. version_is_at_least 1.1b 1.1
  91. version_is_at_least 12.2.5 12.2b
  92. version_is_at_least 4.0 5.0
  93. version_is_at_least 5 5.0
  94. version_is_at_least 1.0_pre2 1.0_p2
  95. version_is_at_least 1.0_alpha2 1.0_p2
  96. version_is_at_least 1.0_alpha1 1.0_beta1
  97. version_is_at_least 1.0_beta3 1.0_rc3
  98. version_is_at_least 1.001000000000000001 1.001000000000000002
  99. done
  100. }
  101. get_times() {
  102. local factor=${1}; shift
  103. echo "${*}"
  104. local real=()
  105. local user=()
  106. for x in {1..5}; do
  107. while read tt tv; do
  108. case ${tt} in
  109. real) real+=( $(dc -e "${tv} ${factor} * p") );;
  110. user) user+=( $(dc -e "${tv} ${factor} * p") );;
  111. esac
  112. done < <( ( time -p "${@}" ) 2>&1 )
  113. done
  114. [[ ${#real[@]} == 5 ]] || die "Did not get 5 real times"
  115. [[ ${#user[@]} == 5 ]] || die "Did not get 5 user times"
  116. local sum
  117. for v in real user; do
  118. vr="${v}[*]"
  119. sum=$(dc -e "${!vr} + + + + 3 k 5 / p")
  120. vr="${v}[@]"
  121. printf '%s %4.2f %4.2f %4.2f %4.2f %4.2f => %4.2f avg\n' \
  122. "${v}" "${!vr}" "${sum}"
  123. done
  124. }
  125. export LC_ALL=C
  126. get_times 1 cutting
  127. get_times 10 cutting_versionator
  128. get_times 1 replacing
  129. get_times 10 replacing_versionator
  130. get_times 1 comparing
  131. get_times 10 comparing_versionator