Commit 19fb518c2a0c5d88ed22bba7083b7e7bc2a9c231

Authored by Dmitry Adamushko
Committed by Ingo Molnar
1 parent 50df5d6aea

latencytop: optimize LT_BACKTRACEDEPTH loops a bit

There is no need to loop any longer when 'same == 0'.

Signed-off-by: Dmitry Adamushko <dmitry.adamushko@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

Showing 1 changed file with 17 additions and 10 deletions Side-by-side Diff

... ... @@ -64,8 +64,8 @@
64 64 return;
65 65  
66 66 for (i = 0; i < MAXLR; i++) {
67   - int q;
68   - int same = 1;
  67 + int q, same = 1;
  68 +
69 69 /* Nothing stored: */
70 70 if (!latency_record[i].backtrace[0]) {
71 71 if (firstnonnull > i)
72 72  
73 73  
... ... @@ -73,12 +73,15 @@
73 73 continue;
74 74 }
75 75 for (q = 0 ; q < LT_BACKTRACEDEPTH ; q++) {
76   - if (latency_record[i].backtrace[q] !=
77   - lat->backtrace[q])
  76 + unsigned long record = lat->backtrace[q];
  77 +
  78 + if (latency_record[i].backtrace[q] != record) {
78 79 same = 0;
79   - if (same && lat->backtrace[q] == 0)
80 80 break;
81   - if (same && lat->backtrace[q] == ULONG_MAX)
  81 + }
  82 +
  83 + /* 0 and ULONG_MAX entries mean end of backtrace: */
  84 + if (record == 0 || record == ULONG_MAX)
82 85 break;
83 86 }
84 87 if (same) {
85 88  
86 89  
87 90  
... ... @@ -143,14 +146,18 @@
143 146 for (i = 0; i < LT_SAVECOUNT ; i++) {
144 147 struct latency_record *mylat;
145 148 int same = 1;
  149 +
146 150 mylat = &tsk->latency_record[i];
147 151 for (q = 0 ; q < LT_BACKTRACEDEPTH ; q++) {
148   - if (mylat->backtrace[q] !=
149   - lat.backtrace[q])
  152 + unsigned long record = lat.backtrace[q];
  153 +
  154 + if (mylat->backtrace[q] != record) {
150 155 same = 0;
151   - if (same && lat.backtrace[q] == 0)
152 156 break;
153   - if (same && lat.backtrace[q] == ULONG_MAX)
  157 + }
  158 +
  159 + /* 0 and ULONG_MAX entries mean end of backtrace: */
  160 + if (record == 0 || record == ULONG_MAX)
154 161 break;
155 162 }
156 163 if (same) {