diff --git a/src/ftxui/dom/benchmark_test.cpp b/src/ftxui/dom/benchmark_test.cpp index 76d20c1fa1752704d3f4d890cf5993062315e2d4..bf8ca9f35870476a61d881cf5ca2a68542fad648 100644 --- a/src/ftxui/dom/benchmark_test.cpp +++ b/src/ftxui/dom/benchmark_test.cpp @@ -30,6 +30,19 @@ static void BencharkBasic(benchmark::State& state) { } BENCHMARK(BencharkBasic)->DenseRange(0, 256, 16); +static void BencharkText(benchmark::State& state) { + while (state.KeepRunning()) { + std::string content = "HELLO world "; + for(int i=0; i<state.range(0); ++i) { + content += content; + } + auto document = paragraph(content); + Screen screen(200,200); + Render(screen, document); + } +} +BENCHMARK(BencharkText)->DenseRange(0, 10, 1); + } // namespace ftxui // NOLINTEND diff --git a/src/ftxui/screen/string.cpp b/src/ftxui/screen/string.cpp index b477acb18626d5ae508bd2fabe72787bcd41ac21..c1baf16373b016094088fc86c76f202add90b374 100644 --- a/src/ftxui/screen/string.cpp +++ b/src/ftxui/screen/string.cpp @@ -1368,7 +1368,7 @@ const std::array<WordBreakPropertyInterval, 1288> g_word_break_intervals = {{ // Find a codepoint inside a sorted list of Interval. template <size_t N> -bool Bisearch(uint32_t ucs, const std::array<Interval, N> table) { +bool Bisearch(uint32_t ucs, const std::array<Interval, N>& table) { if (ucs < table.front().first || ucs > table.back().last) { // NOLINT return false; } @@ -1391,7 +1391,7 @@ bool Bisearch(uint32_t ucs, const std::array<Interval, N> table) { // Find a value inside a sorted list of Interval + property. template <class C, size_t N> -bool Bisearch(uint32_t ucs, const std::array<C, N> table, C* out) { +bool Bisearch(uint32_t ucs, const std::array<C, N>& table, C* out) { if (ucs < table.front().first || ucs > table.back().last) { // NOLINT return false; }