AnalyseLog 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #!/bin/sh
  2. # simple script to check the progress
  3. gawk -- '
  4. BEGIN {
  5. index_count = 0
  6. index_delta = 0
  7. index_time = 0
  8. delete parse_count
  9. delete parse_delta
  10. delete parse_time
  11. delete parse_max
  12. delete render_count
  13. delete render_delta
  14. delete render_max
  15. quotes = "['"'"'\"]"
  16. }
  17. END {
  18. if (0 != index_delta) {
  19. printf("Index: %15d %8.2fs per %5d\n", index_count, (index_time / (index_count / index_delta)), index_delta)
  20. } else {
  21. print "Index: Not Started"
  22. }
  23. if (0 != length(parse_delta)) {
  24. for (i in parse_delta) {
  25. if (0 == parse_max[i]) {
  26. if (i in render_max) {
  27. complete = 100
  28. } else {
  29. complete = 0
  30. }
  31. } else {
  32. complete = 100 * parse_count[i] / parse_max[i]
  33. }
  34. average = parse_time[i] / (parse_count[i] / parse_delta[i])
  35. printf("Parse[%2d]: %11d %6.1f%% %8.2fs per %5d\n", i, parse_count[i], complete, average, parse_delta[i])
  36. }
  37. } else {
  38. print "Parse: Not Started"
  39. }
  40. if (0 != length(render_delta)) {
  41. for (i in render_delta) {
  42. n = render_max[i]
  43. if (0 == n) {
  44. n = parse_count[i]
  45. }
  46. if (0 != n) {
  47. complete = 100 * render_count[i] / n
  48. } else {
  49. complete = 0
  50. }
  51. average = render_time[i] / (render_count[i] / render_delta[i])
  52. printf("Render[%2d]: %10d %6.1f%% %8.2fs per %5d\n", i, render_count[i], complete, average, render_delta[i])
  53. }
  54. } else {
  55. print "Render: Not Started"
  56. }
  57. }
  58. /^Index:/ {
  59. index_time += $2
  60. n = $3
  61. index_delta = n - index_count
  62. index_count = n
  63. }
  64. /^make[[:space:]]+RENDER_BLOCK=.*parse/ {
  65. n = gensub("^[^=]*=" quotes "*([[:digit:]]+)" quotes "*.*$", "\\1", "", $2) + 0
  66. c = gensub("^[^=]*=" quotes "*([[:digit:]]+)" quotes "*.*$", "\\1", "", $4) + 0
  67. sub("k", "000", c)
  68. if ("all" == c) {
  69. c = 0
  70. }
  71. parse_max[n] = c
  72. render_max[n] = c
  73. }
  74. /^Parse\[/ {
  75. p1 = index($0, "-")
  76. p2 = index($0, ".")
  77. if (p1 > 0 && p2 > 0) {
  78. i = substr($0, p1 + 1, p2 - p1 - 1)
  79. if ("Total:" == $2) {
  80. parse_count[i] = $3
  81. parse_max[i] = $3
  82. } else {
  83. parse_time[i] += $2
  84. n = $3
  85. parse_delta[i] = n - parse_count[i]
  86. parse_count[i] = n
  87. }
  88. }
  89. }
  90. /^Render\[/ {
  91. p1 = index($0, "[")
  92. p2 = index($0, "]")
  93. if (p1 > 0 && p2 > 0) {
  94. i = substr($0, p1 + 1, p2 - p1 - 1)
  95. if ("Total:" == $2) {
  96. render_count[i] = $3
  97. render_max[i] = $3
  98. } else {
  99. render_time[i] += $2
  100. n = $3
  101. render_delta[i] = n - render_count[i]
  102. render_count[i] = n
  103. }
  104. }
  105. }
  106. ' "$@"