10ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka/* 20ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka * Copyright (C) 2016 The Android Open Source Project 30ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka * 40ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka * Licensed under the Apache License, Version 2.0 (the "License"); 50ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka * you may not use this file except in compliance with the License. 60ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka * You may obtain a copy of the License at 70ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka * 80ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka * http://www.apache.org/licenses/LICENSE-2.0 90ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka * 100ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka * Unless required by applicable law or agreed to in writing, software 110ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka * distributed under the License is distributed on an "AS IS" BASIS, 120ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka * See the License for the specific language governing permissions and 140ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka * limitations under the License. 150ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka */ 160ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka#include <benchmark/benchmark.h> 170ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 180ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka#include "minikin/WordBreaker.h" 190ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka#include "util/UnicodeUtils.h" 200ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 210ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonakanamespace minikin { 220ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 230ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonakastatic void BM_WordBreaker_English(benchmark::State& state) { 240ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka const char* kLoremIpsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do " 250ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka "eiusmod tempor incididunt ut labore et dolore magna aliqua."; 260ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 270ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka WordBreaker wb; 280ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka wb.setLocale(icu::Locale::getEnglish()); 290ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka std::vector<uint16_t> text = utf8ToUtf16(kLoremIpsum); 300ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka while (state.KeepRunning()) { 310ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka wb.setText(text.data(), text.size()); 320ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka while (wb.next() != -1) {} 330ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka } 340ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka} 350ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo NonakaBENCHMARK(BM_WordBreaker_English); 360ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 370ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka// TODO: Add more tests for other languages. 380ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 390ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka} // namespace minikin 40