MCPcopy Create free account
hub / github.com/FastLED/FastLED / FL_TEST_FILE

Function FL_TEST_FILE

tests/fl/gfx/perf_primitives.hpp:20–201  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18static fl::u32 nsPerCall(fl::u32 us) { return (us * 1000) / kIters; }
19
20FL_TEST_FILE(FL_FILEPATH) {
21
22FL_TEST_CASE("Graphics performance - drawDisc") {
23 CRGB buffer[1024] = {};
24 fl::CanvasRGB canvas(buffer, 32, 32);
25 fl::s16x16 cx = fl::s16x16(16), cy = fl::s16x16(16);
26 canvas.drawDisc(CRGB(255, 0, 0), cx, cy, fl::s16x16(8));
27
28 auto start = fl::chrono::steady_clock::now();
29 for (fl::u16 i = 0; i < kIters; ++i) {
30 fl::s16x16 r = fl::s16x16(2) + fl::s16x16::from_raw((fl::i32)(i % 10) * (fl::s16x16::SCALE / 2));
31 canvas.drawDisc(CRGB(255, 0, 0), cx, cy, r);
32 }
33 auto end = fl::chrono::steady_clock::now();
34 fl::u32 us = (fl::u32)fl::chrono::duration_cast<fl::chrono::microseconds>(end - start).count();
35 fl::printf(" drawDisc: %u us total, %u ns/call\n", (unsigned)us, (unsigned)nsPerCall(us));
36 FL_CHECK(us < 100000);
37}
38
39FL_TEST_CASE("Graphics performance - drawDisc large") {
40 CRGB buffer[4096] = {};
41 fl::CanvasRGB canvas(buffer, 64, 64);
42 fl::s16x16 cx = fl::s16x16(32), cy = fl::s16x16(32);
43 canvas.drawDisc(CRGB(255, 0, 0), cx, cy, fl::s16x16(20));
44
45 auto start = fl::chrono::steady_clock::now();
46 for (fl::u16 i = 0; i < kIters; ++i) {
47 fl::s16x16 r = fl::s16x16(8) + fl::s16x16::from_raw((fl::i32)(i % 20) * (fl::s16x16::SCALE / 2));
48 canvas.drawDisc(CRGB(255, 0, 0), cx, cy, r);
49 }
50 auto end = fl::chrono::steady_clock::now();
51 fl::u32 us = (fl::u32)fl::chrono::duration_cast<fl::chrono::microseconds>(end - start).count();
52 fl::printf(" drawDisc(large): %u us total, %u ns/call\n", (unsigned)us, (unsigned)nsPerCall(us));
53 FL_CHECK(us < 200000);
54}
55
56FL_TEST_CASE("Graphics performance - drawRing") {
57 CRGB buffer[1024] = {};
58 fl::CanvasRGB canvas(buffer, 32, 32);
59 fl::s16x16 cx = fl::s16x16(16), cy = fl::s16x16(16);
60 canvas.drawRing(CRGB(0, 255, 0), cx, cy, fl::s16x16(6), fl::s16x16(2));
61
62 auto start = fl::chrono::steady_clock::now();
63 for (fl::u16 i = 0; i < kIters; ++i) {
64 fl::s16x16 r = fl::s16x16(2) + fl::s16x16::from_raw((fl::i32)(i % 8) * (fl::s16x16::SCALE / 2));
65 fl::s16x16 t = fl::s16x16(1) + fl::s16x16::from_raw((fl::i32)(i % 4) * (fl::s16x16::SCALE / 4));
66 canvas.drawRing(CRGB(0, 255, 0), cx, cy, r, t);
67 }
68 auto end = fl::chrono::steady_clock::now();
69 fl::u32 us = (fl::u32)fl::chrono::duration_cast<fl::chrono::microseconds>(end - start).count();
70 fl::printf(" drawRing: %u us total, %u ns/call\n", (unsigned)us, (unsigned)nsPerCall(us));
71 FL_CHECK(us < 150000);
72}
73
74FL_TEST_CASE("Graphics performance - drawLine") {
75 CRGB buffer[1024] = {};
76 fl::CanvasRGB canvas(buffer, 32, 32);
77 canvas.drawLine(CRGB(0, 0, 255), fl::s16x16(0), fl::s16x16(0), fl::s16x16(31), fl::s16x16(31));

Callers

nothing calls this directly

Calls 9

printfFunction · 0.85
nsPerCallFunction · 0.85
s16x16Class · 0.50
CRGBClass · 0.50
drawDiscMethod · 0.45
countMethod · 0.45
drawRingMethod · 0.45
drawLineMethod · 0.45
drawStrokeLineMethod · 0.45

Tested by

no test coverage detected