|
@ -40,36 +40,36 @@ double Benchmark::all_cases(TIME format) noexcept { |
|
|
/// -------------------------- Benchmark Code Check ---------------------------
|
|
|
/// -------------------------- Benchmark Code Check ---------------------------
|
|
|
|
|
|
|
|
|
double Benchmark::raw_code_check(TIME format) noexcept { |
|
|
double Benchmark::raw_code_check(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&raw_code : all_raw_codes) { |
|
|
for (auto &&raw_code : all_raw_codes_) { |
|
|
raw_code.valid(); |
|
|
raw_code.valid(); |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_raw_codes.size(); |
|
|
return time_format(start, format) / (double)all_raw_codes_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::short_code_check(TIME format) noexcept { |
|
|
double Benchmark::short_code_check(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&short_code : all_short_codes) { |
|
|
for (auto &&short_code : all_short_codes_) { |
|
|
short_code.valid(); |
|
|
short_code.valid(); |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_short_codes.size(); |
|
|
return time_format(start, format) / (double)all_short_codes_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::common_code_check(TIME format) noexcept { |
|
|
double Benchmark::common_code_check(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&common_code : all_common_codes) { |
|
|
for (auto &&common_code : all_common_codes_) { |
|
|
common_code.valid(); |
|
|
common_code.valid(); |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_common_codes.size(); |
|
|
return time_format(start, format) / (double)all_common_codes_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::raw_code_check_random(TIME format) noexcept { |
|
|
double Benchmark::raw_code_check_random(TIME format) noexcept { |
|
@ -108,167 +108,167 @@ double Benchmark::common_code_check_random(TIME format) noexcept { |
|
|
/// -------------------------- Benchmark Code String --------------------------
|
|
|
/// -------------------------- Benchmark Code String --------------------------
|
|
|
|
|
|
|
|
|
double Benchmark::short_code_to_string(TIME format) noexcept { |
|
|
double Benchmark::short_code_to_string(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&short_code : all_short_codes) { |
|
|
for (auto &&short_code : all_short_codes_) { |
|
|
short_code.to_string(); |
|
|
short_code.to_string(); |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_short_codes.size(); |
|
|
return time_format(start, format) / (double)all_short_codes_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::short_code_from_string(TIME format) noexcept { |
|
|
double Benchmark::short_code_from_string(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&short_code : all_short_codes_str) { |
|
|
for (auto &&short_code : all_short_codes_str_) { |
|
|
ShortCode{std::forward<std::string>(short_code)}; |
|
|
ShortCode{std::forward<std::string>(short_code)}; |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_short_codes_str.size(); |
|
|
return time_format(start, format) / (double)all_short_codes_str_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::common_code_to_string(TIME format) noexcept { |
|
|
double Benchmark::common_code_to_string(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&common_code : all_common_codes) { |
|
|
for (auto &&common_code : all_common_codes_) { |
|
|
common_code.to_string(); |
|
|
common_code.to_string(); |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_common_codes.size(); |
|
|
return time_format(start, format) / (double)all_common_codes_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::common_code_from_string(TIME format) noexcept { |
|
|
double Benchmark::common_code_from_string(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&common_code : all_common_codes_str) { |
|
|
for (auto &&common_code : all_common_codes_str_) { |
|
|
CommonCode{std::forward<std::string>(common_code)}; |
|
|
CommonCode{std::forward<std::string>(common_code)}; |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_common_codes_str.size(); |
|
|
return time_format(start, format) / (double)all_common_codes_str_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// ------------------------- Benchmark Code Convert --------------------------
|
|
|
/// ------------------------- Benchmark Code Convert --------------------------
|
|
|
|
|
|
|
|
|
double Benchmark::common_code_to_raw_code(TIME format) noexcept { |
|
|
double Benchmark::common_code_to_raw_code(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&common_code : all_common_codes) { |
|
|
for (auto &&common_code : all_common_codes_) { |
|
|
RawCode{std::forward<CommonCode>(common_code)}; |
|
|
RawCode{std::forward<CommonCode>(common_code)}; |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_common_codes.size(); |
|
|
return time_format(start, format) / (double)all_common_codes_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::raw_code_to_common_code(TIME format) noexcept { |
|
|
double Benchmark::raw_code_to_common_code(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&raw_code : all_raw_codes) { |
|
|
for (auto &&raw_code : all_raw_codes_) { |
|
|
raw_code.to_common_code(); |
|
|
raw_code.to_common_code(); |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_raw_codes.size(); |
|
|
return time_format(start, format) / (double)all_raw_codes_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::common_code_to_short_code(TIME format) noexcept { |
|
|
double Benchmark::common_code_to_short_code(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
uint32_t num = 0; |
|
|
uint32_t num = 0; |
|
|
ShortCode::speed_up(ShortCode::NORMAL); |
|
|
ShortCode::speed_up(ShortCode::NORMAL); |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (uint64_t i = 0; i < all_common_codes.size(); i += 1000) { |
|
|
for (uint64_t i = 0; i < all_common_codes_.size(); i += 1000) { |
|
|
ShortCode{all_common_codes[i]}; |
|
|
ShortCode{all_common_codes_[i]}; |
|
|
++num; |
|
|
++num; |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)num; |
|
|
return time_format(start, format) / (double)num; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::short_code_to_common_code(TIME format) noexcept { |
|
|
double Benchmark::short_code_to_common_code(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
uint32_t num = 0; |
|
|
uint32_t num = 0; |
|
|
ShortCode::speed_up(ShortCode::NORMAL); |
|
|
ShortCode::speed_up(ShortCode::NORMAL); |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (uint64_t i = 0; i < all_short_codes.size(); i += 1000) { |
|
|
for (uint64_t i = 0; i < all_short_codes_.size(); i += 1000) { |
|
|
all_short_codes[i].to_common_code(); |
|
|
all_short_codes_[i].to_common_code(); |
|
|
++num; |
|
|
++num; |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)num; |
|
|
return time_format(start, format) / (double)num; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::common_code_to_short_code_fast(TIME format) noexcept { |
|
|
double Benchmark::common_code_to_short_code_fast(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
ShortCode::speed_up(ShortCode::FAST); |
|
|
ShortCode::speed_up(ShortCode::FAST); |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&common_code : all_common_codes) { |
|
|
for (auto &&common_code : all_common_codes_) { |
|
|
ShortCode{std::forward<CommonCode>(common_code)}; |
|
|
ShortCode{std::forward<CommonCode>(common_code)}; |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_common_codes.size(); |
|
|
return time_format(start, format) / (double)all_common_codes_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::short_code_to_common_code_fast(TIME format) noexcept { |
|
|
double Benchmark::short_code_to_common_code_fast(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
ShortCode::speed_up(ShortCode::FAST); |
|
|
ShortCode::speed_up(ShortCode::FAST); |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&short_code : all_short_codes) { |
|
|
for (auto &&short_code : all_short_codes_) { |
|
|
short_code.to_common_code(); |
|
|
short_code.to_common_code(); |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_short_codes.size(); |
|
|
return time_format(start, format) / (double)all_short_codes_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// ---------------------------- Benchmark Mirror -----------------------------
|
|
|
/// ---------------------------- Benchmark Mirror -----------------------------
|
|
|
|
|
|
|
|
|
double Benchmark::vertical_mirror_check(TIME format) noexcept { |
|
|
double Benchmark::vertical_mirror_check(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&raw_code : all_raw_codes) { |
|
|
for (auto &&raw_code : all_raw_codes_) { |
|
|
raw_code.is_vertical_mirror(); |
|
|
raw_code.is_vertical_mirror(); |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_raw_codes.size(); |
|
|
return time_format(start, format) / (double)all_raw_codes_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::horizontal_mirror_check(TIME format) noexcept { |
|
|
double Benchmark::horizontal_mirror_check(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&raw_code : all_raw_codes) { |
|
|
for (auto &&raw_code : all_raw_codes_) { |
|
|
raw_code.is_horizontal_mirror(); |
|
|
raw_code.is_horizontal_mirror(); |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_raw_codes.size(); |
|
|
return time_format(start, format) / (double)all_raw_codes_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::vertical_mirror_convert(TIME format) noexcept { |
|
|
double Benchmark::vertical_mirror_convert(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&raw_code : all_raw_codes) { |
|
|
for (auto &&raw_code : all_raw_codes_) { |
|
|
raw_code.to_vertical_mirror(); |
|
|
raw_code.to_vertical_mirror(); |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_raw_codes.size(); |
|
|
return time_format(start, format) / (double)all_raw_codes_.size(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
double Benchmark::horizontal_mirror_convert(TIME format) noexcept { |
|
|
double Benchmark::horizontal_mirror_convert(TIME format) noexcept { |
|
|
if (!data_ready) { |
|
|
if (!data_ready_) { |
|
|
return -1; // data no ready -> skip
|
|
|
return -1; // data no ready -> skip
|
|
|
} |
|
|
} |
|
|
auto start = clock(); |
|
|
auto start = clock(); |
|
|
for (auto &&raw_code : all_raw_codes) { |
|
|
for (auto &&raw_code : all_raw_codes_) { |
|
|
raw_code.to_horizontal_mirror(); |
|
|
raw_code.to_horizontal_mirror(); |
|
|
} |
|
|
} |
|
|
return time_format(start, format) / (double)all_raw_codes.size(); |
|
|
return time_format(start, format) / (double)all_raw_codes_.size(); |
|
|
} |
|
|
} |
|
|