MCPcopy Create free account
hub / github.com/SmingHub/Sming / testSpeed

Function testSpeed

samples/Basic_ProgMem/app/TestProgmem.cpp:164–220  ·  view source on GitHub ↗

* Run a load of iterations for PSTR/FSTR options to illustrate relative performance. */

Source from the content-addressed store, hash-verified

162 * Run a load of iterations for PSTR/FSTR options to illustrate relative performance.
163 */
164void testSpeed(Print& out)
165{
166 const unsigned iterations = 200;
167
168 out.printf("Speed tests, %u iterations, times in microseconds\n", iterations);
169 ElapseTimer timer;
170 uint32_t baseline, elapsed;
171
172 _FPUTS("Baseline test, read string in RAM...");
173 unsigned sum = 0;
174 timer.start();
175 for(unsigned i = 0; i < iterations; ++i) {
176 sum += sumBuffer(demoText, sizeof(demoText));
177 }
178 baseline = timer.elapsedTime();
179 out << "Elapsed: " << baseline << ", sum " << sum << endl;
180
181#define END() \
182 elapsed = timer.elapsedTime(); \
183 out << "Elapsed: " << elapsed << " (baseline + " << elapsed - baseline << "), sum " << sum << endl;
184
185 _FPUTS("Load PSTR into stack buffer...");
186 sum = 0;
187 timer.start();
188 for(unsigned i = 0; i < iterations; ++i) {
189 LOAD_PSTR(buf, demoPSTR1);
190 sum += sumBuffer(buf, sizeof(buf));
191 }
192 END()
193
194 _FPUTS("Load PSTR into String...");
195 sum = 0;
196 timer.start();
197 for(unsigned i = 0; i < iterations; ++i) {
198 String s(demoFSTR1.data());
199 sum += sumBuffer(s.c_str(), s.length() + 1);
200 }
201 END()
202
203 _FPUTS("Load FlashString into stack buffer...");
204 sum = 0;
205 timer.start();
206 for(unsigned i = 0; i < iterations; ++i) {
207 LOAD_FSTR(buf, demoFSTR1);
208 sum += sumBuffer(buf, sizeof(buf));
209 }
210 END()
211
212 _FPUTS("Load FlashString into String...");
213 sum = 0;
214 timer.start();
215 for(unsigned i = 0; i < iterations; ++i) {
216 String s(demoFSTR1);
217 sum += sumBuffer(s.c_str(), s.length() + 1);
218 }
219 END()
220}
221

Callers 1

testProgmemFunction · 0.85

Calls 7

sumBufferFunction · 0.85
printfMethod · 0.80
elapsedTimeMethod · 0.80
dataMethod · 0.80
startMethod · 0.45
c_strMethod · 0.45
lengthMethod · 0.45

Tested by

no test coverage detected